.NET 4.5.1中的WCF客户端:如何在使用WebRequest时启用TLS 1.2?

时间:2015-04-16 01:46:45

标签: .net wcf

我们的.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的系统?

3 个答案:

答案 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);