日期:2019-03-24 浏览次数:6371 次
1、请求被中止: 未能创建 SSL/TLS 安全通道。NET4.0下解决方案
2、SecurityProtocolType.Tls12 NET4.0下解决方案
System.Net.ServicePointManager.SecurityProtocol
在两个.NET中的默认值4.0/4.5
是SecurityProtocolType.Tls|SecurityProtocolType.Ssl3
。
.NET 4.0
以支持最高TLS 1.0
同时.NET 4.5
支持最多TLS 1.2
但是,应用程序定位.NET 4.0
仍可以支持最多安装在相同环境中的TLS 1.2
if .NET 4.5
。.NET 4.5
安装在上面.NET 4.0
,替换System.dll
。
我通过观察在流量中设置的正确安全协议fiddler4
并通过在.NET 4.0
项目中手动设置枚举值来验证了这一点:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
参考资料:
namespace System.Net { [System.Flags] public enum SecurityProtocolType { Ssl3 = 48, Tls = 192, Tls11 = 768, Tls12 = 3072, } }
如果尝试在仅.NET 4.0
安装了环境的情况下进行破解,您将得到以下异常:
Unhandled Exception: System.NotSupportedException: The requested security protocol is not supported. at System.Net.ServicePointManager.set_SecurityProtocol(SecurityProtocolType v alue)
不过,我不会推荐这种“黑客”,因为未来的补丁等可能会破坏它。*
因此,我决定取消支持的最佳途径SSLv3
是:
.NET 4.5
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;