runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

C# .NET HttpWebRequest 显示指定SSL TLS 版本

 (TLS1.0,TLS1.1,TLS1.2)

在程序启动时加入这段代码:

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

 

ServicePointManager.SecurityProtocol 是全局控制,不需要每次请求都指定。

 

如果你的程序是.NET 4.0 Framework编译的,

 

可以这样写:

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType) 192 |(SecurityProtocolType) 768 |(SecurityProtocolType) 3072;

然后程序运行的机器装.NET Framework 4.5.2 或以上版本。

 

Tls    192    
指定传输层安全 (TLS) 1.0 安全协议。 TLS 1.0 协议在 IETF RFC 2246 中定义。

Tls11    768    
指定传输层安全 (TLS) 1.1 安全协议。 TLS 1.1 协议在 IETF RFC 4346 中定义。 在 Windows 系统上,从 Windows 7 开始支持此值。

Tls12    3072    
指定传输层安全 (TLS) 1.2 安全协议。 TLS 1.2 协议在 IETF RFC 5246 中定义。 在 Windows 系统上,从 Windows 7 开始支持此值。

Tls13    12288    
指定 TLS 1.3 安全协议。 此 TLS 协议在 IETF RFC 8446 定义。

 

如果程序报:请求被中止: 未能创建 SSL/TLS 安全通道。

原因:双方支持的TLS版本对不上。 C#.NET WINFORM 程序(.NET 4.5.2编译),如果不显示指定TLS版本,默认可能工作在仅支持TLS1.0环境下(虽然.NET4.5.2支持 TLS1.1)。而对方又仅支持 TLS1.1 ,TLS 1.2。

解决方法:显示指定程序支持的TLS版本。

-

posted on 2023-07-06 10:07  runliuv  阅读(1343)  评论(0编辑  收藏  举报