本文主要是介绍C#/.Net 爬虫request.GetResponse()报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系/根据验证过程,远程证书无效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PS:C#/.Net 爬虫request.GetResponse()报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系/根据验证过程,远程证书无效【最下方是完整代码】
首先,先放置一张报错的图片:
原因: 网站的证书应该是失效了,并且我发起的请求是基于Https的,所以被系统认定为不安全的连接。并且通过微软官方文档的解释如下:
解决方案:
1.需要使用ServicePointManager.SecurityProtoco属性,这个属性的解释如下,详细可以看官方文档:
使用的方式就是在发起Request请求之前给这个属性设置值:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
枚举的类型是:
2.如果设置完这个属性还是有问题,就要考虑你的客户端与服务器之间是双向认证还是单向认证,默认大多数的网站都是单向认证。(不明白单向认证或者双向认证的同志可以搜索相关博文了解,这里不作阐述)。解决这个的方式是使用ServicePointManager.ServerCertificateValidationCallback这个委托。这个委托主要是用来身份验证的。
解决方案: 实现这个委托,强制返回True
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors){return true;}
详细的代码如下:
这篇关于C#/.Net 爬虫request.GetResponse()报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系/根据验证过程,远程证书无效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!