我正在使用 URL 连接到使用 SOAP 的 Web 服务。显然,该 URL 没有正确的 https
协议(protocol),如果我想通过浏览器访问它,我需要接受此连接的“风险”。
当我想以编程方式访问时,我的问题就开始了。当我尝试发送 SOAP POST
请求时,连接关闭并捕获异常。
"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."
显然这个问题很普遍,可以找到很多资源,this和 this获得最多的赞成票。
当我尝试这部分代码时:
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
不仅连接不工作,而且现在还给我一个:
"The remote server returned an error: (500) Internal Server Error."
现在我的问题是。上面的代码将协议(protocol)从 https
切换到 http
?
如果不是,这行代码究竟做了什么?
最佳答案
我不知道这是否会是你的答案,但因为它不适合发表评论......
不要绕过证书验证。您可能只需要设置正确的 TLS 版本。您可以通过一次使用一个而不是将它们组合在一起来尝试找到支持的最高版本。:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12
如果这不起作用,您可能需要获取证书,服务使用的证书或证书链中更高级别的证书。
关于c# - 覆盖 HTTPS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47797298/