.NET:HttpClient 对象似乎忽略了服务器证书验证的证书颁发机构:我错过了什么吗?

标签 .net ssl https ssl-certificate

我遇到以下情况:我使用 System.Net.Http.HttpClient (.Net Fx 4.7.1) 对象访问使用 SSL/TLS 的 URL。服务器的证书应该是可信的,因为它是由公司的 PKI 基础设施签名的,我的同事已经更新了客户端计算机的证书存储以信任它。

但是,如果我使用浏览器 (IE/Chrome) 打开 URL,连接是可信的,当我使用 HttpClient 对象访问相同的 URL 时,我得到以下错误链:

AggregateException:发生一个或多个错误。 HttpRequestException:发送请求时发生错误。 WebException:基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。 AuthenticationException:根据验证程序,远程证书无效。

看来,浏览器 (Internet Explorer/Chrome) 确实有另一个“验证程序”作为 HttpClient 对象。

如果对https://google.com进行测试一切正常。

我是否需要告诉 HttpClient 对象它需要处理存储在计算机帐户中的可信权限? 另一方面,我没有找到任何属性。

我知道如何使用 ServerCertificateVAlidateionCallback 绕过异常,但由于我需要安全且受信任的连接,因此这只是一个测试解决方案。

有什么想法吗?非常感谢! 伙计们,玩得开心!

最佳答案

谢谢你,巴顿

已解决 - 找出我做错了什么:证书及其链都很好,我的错误是,我仍然订阅了 ServicePointManager.ServerCertificateValidationCallback(...) 并且我目前在那里返回 false,因为我认为,只有在证书验证失败时才会调用 ServerCertificateValidationCallback,但实际上该方法旨在执行自己的验证,因此,当然,它总是被调用。

谢谢你给我指明了正确的方向 - 这是一个正确的靶心......

关于.NET:HttpClient 对象似乎忽略了服务器证书验证的证书颁发机构:我错过了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52889076/

相关文章:

c# - SharePoint 错误 : Web application at xxxx could not be found

Perl LWP::UserAgent 在特定服务器上使 SSL 失败

java - 是否有适用于 Apache Beam 的 Https IO 连接器?

http - 可以通过 HTTPS 提供 Polymer 2.0 PWA 吗?

c# - 奇怪的 wpf 绑定(bind)

c# - C# 中的类型推断

web-services - haproxy 1.5 特定源 IP 地址在 haproxy 日志中显示 <NOSRV> 503 SC

带 SSL 的 codeigniter 文件夹结构

c# - 在多线程环境中引发事件

wordpress - htaccess wordpress 301 重定向