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版本。
-