解决“未能创建 SSL/TLS 安全通道”异常

Posted johnsonshu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决“未能创建 SSL/TLS 安全通道”异常相关的知识,希望对你有一定的参考价值。

引用:

https://www.cnblogs.com/ahdung/p/10489229.html

 

之前写了一个桌面程序,程序会间歇性访问某个https接口,一直用的好好的,今天突然报错了,异常就发生在访问接口的地方,曰“请求被中止,未能创建 SSL/TLS 安全通道。”,另外有台电脑也有跑该程序,也是同样的报错,看来是接口方改动过什么了。

搜索一番,原因应该是,接口方变更了安全协议,而客户端并未启用该协议。解决办法自然就是:让客户端启用该协议。具体就是在发起网络请求之前确保ServicePointManager.SecurityProtocol中含有服务端所用的安全协议,如果不知道或希望客户端健壮一点,当然最简单的方式就是把所有可用的协议都启用,随你服务端将来怎么换。代码如下:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
                                       | SecurityProtocolType.Tls
                                       | SecurityProtocolType.Tls11
                                       | SecurityProtocolType.Tls12;

但如果客户端是基于.net framework 4.0,SecurityProtocolType枚举中并没有Tls11和Tls12,这就需要直接填值:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
                                       | SecurityProtocolType.Tls
                                       | (SecurityProtocolType)0x300 //Tls11
                                       | (SecurityProtocolType)0xC00; //Tls12

以上是关于解决“未能创建 SSL/TLS 安全通道”异常的主要内容,如果未能解决你的问题,请参考以下文章

"请求被中止: 未能创建 SSL/TLS 安全通道"解决办法

请求被中止: 未能创建 SSL/TLS 安全通道

(40)C#里使用WebRequest和出错:请求被中止: 未能创建 SSL/TLS 安全通道

(40)C#里使用WebRequest和出错:请求被中止: 未能创建 SSL/TLS 安全通道

两种方式彻底解决请求被中止: 未能创建 SSL/TLS 安全通道

C# 解决“请求被中止: 未能创建 SSL/TLS 安全通道”的问题