.NET 4.5和.NET 4.5.1默认启用TLS 1.1和TLS 1.2

时间:2016-01-21 09:56:15

标签: c# .net wcf ssl tls1.2

在我们的Windows 2012 Server R2上,我们需要禁用TLS 1.0。

但是我们运行.NET 4.5 Wcf服务。我们发现,如果我们禁用TCF 1.0,WCF服务不再运行,因为我们收到错误'现有连接被远程主机强行关闭了。

.NET 4.5和.NET 4.5.1中是否默认启用了TLS 1.1 / 1.2?如果没有,我们假设是这样的,在我们的WCF项目中,我们强制项目使用TLS 1.1 / 1.2吗?

2 个答案:

答案 0 :(得分:54)

没有。为各种框架版本启用的默认协议是:

  • .NET Framework 4.5和4.5.1:SSLv3和TLSv1
  • .NET Framework 4.5.2:SSLv3,TLSv1和TLSv1.1
  • .NET Framework 4.6及更高版本:TLSv1,TLSv1.1和TLS1.2

来源:[1] [2]

您可以使用ServicePointManager类指定应用程序支持的协议,特别是通过设置SecurityProtocol属性,在您的情况下,您可以将其设置为以下内容:

System.Net.ServicePointManager.SecurityProtocol =
    SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

答案 1 :(得分:2)

Ian Kemp的答案没有问题,但我只想提供另一个答案,这意味着您不必重新编译代码。

.NET 4.5之上的任何内容都可以支持TLS 1.2,但是低于.NET 4.7的默认值是TLS 1.1。因此,如果您需要使用TLS 1.2访问某些内容,则会收到一条错误消息,因为它将尝试使用默认值。

您可以将以下代码添加到配置文件中,以覆盖默认值。

<runtime>
      <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/>
</runtime>