Sha*_*Wet 8 asp.net-mvc ssl-certificate
我有一个已经在生产环境中运行了大约 4 年的 asp.net mvc web 应用程序。突然从大约一周前开始,我收到了对 3rd 方安全 API 的所有调用都返回此错误的消息:
System.Net.WebException:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。---> System.Security.Authentication.AuthenticationException: 根据验证程序,远程证书无效。
这是用于调用 SendGrid 以发送电子邮件、调用 Azure Blob 存储以上传文档、调用 Connect.io 以进行日志记录。
通过将连接字符串更改为使用 http 而不是 https,我设法暂时解决了 Azure Blob 存储问题。
很明显,我的应用服务器出现了问题,我不知道从哪里开始寻找。
请帮忙。
编辑:原来我使用的是由我的(较少使用的)第 3 方 API 之一提供的示例库,并且该库有一个覆盖,
System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors)
它有自己的关于什么构成有效证书的逻辑!!!啊!
这部分成为您问题的关键信息:
对于对 3rd-party 安全 API 的所有调用,我收到此错误
根据MSDN 博客:
导致此错误消息的原因是该进程无法在 HTTPS (SSL) 请求期间验证服务器提供的服务器证书。第一个故障排除步骤应该是查看服务器提供的证书和链中的每个证书是否都没有问题。
由于一个或多个第三方证书似乎被拒绝,您可以配置证书信任列表的 Trusted Roots 部分,将所有必需的第三方 CA 作为链的一部分,以使用来自可信来源的安全 API,包括重新颁发的证书(如果有)。
更多详情:https : //technet.microsoft.com/en-us/library/dn265983.aspx
注意(可选):
作为临时措施,您可以在WebRole.cs所有相关的第三方证书重新颁发之前实施此证书验证处理程序(请记住,此设置将信任所有已颁发的证书,因此不建议长期使用):
System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)
其他参考:http : //robertgreiner.com/2013/03/could-not-establish-trust-relationship-for-the-ssl-tls-secure-channel/
尝试获取有关服务器证书的一些信息,并查看是否需要安装任何特定证书。
服务器可能拥有由您尚未信任的第 3 方 CA 签署的证书。解决方案是将该CA添加到受信任的根 CA 列表。
| 归档时间: |
|
| 查看次数: |
28994 次 |
| 最近记录: |