当前位置: 移动技术网 > IT编程>开发语言>.net > 【手记】解决“未能创建 SSL/TLS 安全通道”异常

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

2019年03月08日  | 移动技术网IT编程  | 我要评论

7k7k7k小游戏,秦学士和朱洁,灵师 暗夜萧然

之前写了一个桌面程序,程序会间歇性访问某个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

如此即可。

事实上,这个问题正是因为我的客户端是基于.net 4.0的,而4.0的servicepointmanager.securityprotocol默认就不含tls11和tls12,所以当服务端改用这两种安全协议时,自然访问不了。

-eof-

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网