创建Azure Event Grid webhook订阅出现TLS握手失败问题咨询
你使用的ASP.NET Core默认HTTPS开发证书就是触发该错误的直接原因。Azure Event Grid对Webhook端点的TLS配置有强制要求,不符合要求的端点会直接在TLS握手阶段被Azure端断开连接,和你观测到的日志表现完全匹配。
Event Grid Webhook TLS强制要求
- 必须使用TLS 1.2及以上版本,TLS 1.0、1.1版本会被直接拒绝
- 服务端证书必须由公开受信任的根CA签发,自签名证书、本地开发证书、私有CA签发的证书均不被Azure信任
- 证书的主题备用名称(SAN)必须和Webhook地址的域名/IP完全匹配
- 证书必须处于有效期内,且未被列入吊销列表
本地测试解决方案
如果你需要在本地测试Webhook逻辑,可以选择以下任一方案规避证书信任问题:
- 用内网穿透工具配合免费公共可信证书:使用ngrok等工具将本地服务暴露到公网,搭配免费公共CA签发的证书配置到Kestrel,使用穿透后的公网地址作为订阅的Webhook端点
- 部署到自带可信证书的托管服务:将测试服务部署到Azure App Service这类托管平台,这类平台默认会为服务分配受公共信任的HTTPS证书,无需自行配置
- 临时使用Event Grid的调试模式:仅建议在纯本地测试场景使用,通过调整订阅的相关配置跳过部分校验,该配置不建议在生产环境使用
你观测到的Kestrel日志表现,正是因为Azure端在TLS握手阶段检测到证书不受信任,直接发送FIN包终止连接,没有进入后续的HTTP请求交互阶段,所以门户会返回响应码Unknown的错误。
内容的提问来源于stack exchange,提问作者Ron Idaho
相关产品推荐
相关产品推荐

