当前位置:  开发笔记 > 编程语言 > 正文

Web客户端例外:基础连接已关闭:无法为SSL/TLS安全通道建立信任关系

如何解决《Web客户端例外:基础连接已关闭:无法为SSL/TLS安全通道建立信任关系》经验,为你挑选了2个好方法。

我有一个简单的应用程序,它使用C#Web Client类下载网站HTML.这是我正在使用的代码的精简样本:

WebClient wc = new WebClient();
wc.Headers.Add("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
htmlCode = wc.DownloadString("https://www.oig.hhs.gov/exclusions/exclusions_list.asp");

网站证书似乎存在问题,因为我遇到了这个例外:

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." "The remote certificate is invalid according to the validation procedure.

如果您将链接复制并粘贴到浏览器中,则需要您在允许您查看网站之前同意风险.它是一个政府网站,所以我不担心任何病毒或任何东西.有没有告诉网络客户端绕过这个问题,并继续访问该网站?



1> Leon Cullens..:

据我所知,这是因为他们使用无效或过期的SSL证书.您可以使用以下方法绕过(忽略)它:

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

编辑2015:

这篇文章得到了很多赞成,但我很遗憾我的回答.它可能会删除您的错误,但它无法解决问题.接受任何SSL证书会使你在中间攻击中容易受到攻击,所以这通常是一个非常糟糕的主意.我将留下此答案以供将来参考,但请注意,您应尝试在根目录中解决问题,即确保SSL证书有效.


请注意,这样做意味着您接受任何SSL证书,并且容易受到中间人攻击......

2> 小智..:

试试这个:
你想要做的是,将证书安装到本地机器上.

如果不在代码中的过程将执行以下操作:

    以管理员模式(不是Chrome)打开Internet Explorer.

    转到该网站

    选择继续

    单击证书上的titelbar/url栏以查看证书.

    单击安装证书.

因此,您可以尝试查看这些其他问题,看看它们是否对您有所帮助:

如何使用c#以编程方式将证书安装到本地计算机存储中?

在C#中将证书安装到Windows本地用户证书存储中

尝试安装证书,如果要求继续,请查看是否再次访问该URL.

****编辑**:
我读了网站证书,这是因为证书与网站的网址不匹配.

一个简单的改变是:

htmlCode = wc.DownloadString("https://oig.hhs.gov/exclusions/exclusions_list.asp");

只需删除www.


删除www也解决了这个问题.我希望我能接受这两个答案.
你应该接受这个,另一个答案是解决方法 - 而不是修复
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有