在我们的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吗?
答案 0 :(得分:54)
没有。为各种框架版本启用的默认协议是:
您可以使用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>