Azure Web 应用程序 - 无法为 SSL/TLS 安全通道建立信任关系

Azure Web App- Could not establish trust relationship for the SSL/TLS secure channel

我在 Azure 中的同一 Web 应用程序上有 Web 作业和 Web API 运行。 Web 作业访问 Web API 通过 Https。但是它在尝试访问 Web API:

时抛出以下错误

An error occurred while sending the request. The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

将以下内容添加到您的代码中,这会将您的运行时设置为接受 SSL/TLS 连接。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

在启动时向 webjob 添加以下代码解决了这个问题。

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

我想补充说明一下通过 HTTPS 进行的 SSL 握手和通信。 如果您遇到此问题“基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系”,则表示未满足以下条件之一:

  1. 证书签名有效
  2. 证书链以受信任的根结束
  3. 链具有有效的基本约束
  4. 撤销检查成功/未撤销。 CRL 端点可访问。 或由于以下限制:
  5. 链有名称限制政策。
  6. 连锁店有证书政策
  7. 链已扩展密钥用法
  8. 链有 SubjectKeyIdentifier / AuthorityKeyIdentifier 匹配

如果您使用带有域 {webappname}.azurewebsites.net 的 Azure Web 应用程序并使用内部私有证书,那么除了以下三个选项之外没有解决此问题的方法,因为这是不受支持的情况: 一)应用服务环境 I))需要绕过SSL验证 III) 使用众所周知的证书颁发机构证书使其工作。

为什么不支持的场景: 您无法在 Web 应用程序级别安装新的证书颁发机构,因为您使用的是可共享资源而不是专用资源。 即使您使用应用程序配置“WEBSITES_LOAD_CERTIFICATES”将证书安装到 Azure,它也不允许在证书存储区内安装证书。

您可以通过网络跟踪得知失败,它应该在服务器问候之后的“身份验证和预主密码”阶段失败。

希望这些信息对您有所帮助。

我遇到了同样的问题。发生这种情况是因为我创建了一个没有 SSL 绑定的自定义域。在 Azure Web 应用中创建自定义绑定时,Azure 默认为 HTTPS。如果不添加 SSL 绑定,请确保在 Azure 应用服务应用程序的自定义域页面上取消选择 仅 HTTPS 按钮。