我们的.net WCF客户端,即WebRequest调用,编译到运行在Win2012-R2上的Windows EXE,拒绝连接到仅面向TLS 1.2的Web服务器
我们知道Win2012和.NET 4.5x支持TLS 1.2
当服务器显示TLS 1.0及更高版本时,我们没有问题。只有当我们连接的服务器具有DISABLED TLS 1.0,1.1和SSL2以及SSL3时才会出现此问题。 Server ONLY表面TLS 1.2。 Chrome和Firefox(在Win 7及更高版本上)可以很好地连接到服务器(没有任何警告或SSL问题)。
服务器证书是%100 OK。
问题是WebRequest在这种情况下无法连接。
我们需要在代码中设置什么,以便我们使用WebRequest将连接到可能运行TLS 1.2,1.1,1.0和/或SSL v3的系统?
答案 0 :(得分:34)
您应该使用.NET 4.5或更高版本,并在代码中添加以下行:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
答案 1 :(得分:33)
虽然不容易理解,但所需的属性是:
System.Net.ServicePointManager.SecurityProtocol
这可用于在WCF环境中禁用和启用TLS级别。
此外,您可以查看当前使用的WCF:
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());
感谢: How do I disable SSL fallback and use only TLS for outbound connections in .NET? (Poodle mitigation)
答案 2 :(得分:0)
重要的是,至少应从.Net Framework v4.5
开始。较旧的版本不不支持TSL 1.2
。稍后,在向服务器进行身份验证时,显式使用此协议:
sslStream.AuthenticateAsClient(this._configuration.Host, null, SslProtocols.Tls12, true);