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

bro*_*oke 23 .net c# ssl

我有一个简单的应用程序,它使用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");
Run Code Online (Sandbox Code Playgroud)

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

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.

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

Leo*_*ens 47

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

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

编辑2015:

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

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

小智 15

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

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

  1. 以管理员模式(不是Chrome)打开Internet Explorer.
  2. 转到该网站
  3. 选择继续
  4. 单击证书上的titelbar/url栏以查看证书.
  5. 单击安装证书.

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

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

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

一个简单的改变是:

htmlCode = wc.DownloadString("https://oig.hhs.gov/exclusions/exclusions_list.asp");
Run Code Online (Sandbox Code Playgroud)

只需删除www.

  • 删除www也解决了这个问题.我希望我能接受这两个答案. (3认同)
  • 你应该接受这个,另一个答案是解决方法 - 而不是修复 (2认同)