更新.NET Web服务以使用TLS 1.2

问题描述 投票:55回答:5

我需要使用TLS 1.2从我的.NET Web服务连接到另一个将强制TLS 1.2的服务。我找到了一个资源,说.NET 4.6默认使用TLS 1.2,这听起来像最简单的解决方案。我在服务器上更新了.NET框架并重新启动。在IIS中,我尝试使用.NET 4.6创建应用程序池,但4.0是唯一的选择。然后我发现了一些东西说它仍然会说4.0因为4.6是对.NET 4.0的“到位”更新。所以我想也许我已经完成了。然而,在我出于无关的原因的错误页面上,它说Microsoft .NET Framework Version:4.0.30319所以它似乎我没有成功升级。有关如何确保我的应用程序池使用.NET 4.6的更多指针,或更一般地说如何启用TLS 1.2?

c# .net tls1.2
5个回答
83
投票

我们实际上只是将.NET Web服务升级到4.6以允许TLS 1.2。

阿尔乔姆所说的是我们所做的第一步。我们将Web服务的框架重新编译为4.6,我们尝试更改注册表项以启用TLS 1.2,尽管这不起作用:连接仍在TLS 1.0中。此外,我们不想在机器上禁止SLL 3.0,TLS 1.0或TLS 1.1:其他Web服务可能正在使用此功能;我们在注册表上回滚了我们的更改。

我们实际上更改了Web.Config文件告诉IIS:“嘿,请在4.6中运行我”。

以下是我们在.NET 4.6中的web.config +重新编译中添加的更改:

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->

    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />

    <authentication mode="Windows"/>
    <pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>

并且连接更改为TLS 1.2,因为IIS现在运行4.6中的Web服务(明确说明),4.6默认使用TLS 1.2。


49
投票

在实例化Web服务客户端之前添加以下代码:

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

或者为了与TLS 1.1和之前的向后兼容:

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

16
投票

如果你使用早于4.5的.Net,你就不会在枚举中使用Tls12所以明确提到here状态

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

12
投票

需要三个步骤:

  1. 通过将Enabled=0DisabledByDefault=1添加到注册表(完整路径为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols),在服务器计算机上明确标记SSL2.0,TLS1.0,TLS1.1为禁止。有关详情,请参阅屏幕registry
  2. 按照以下步骤显式启用TLS1.2。分别使用Enabled=1DisabledByDefault=0

注意:验证服务器版本:Windows Server 2003不支持TLS 1.2协议

  1. 仅在应用程序级别启用TLS1.2,如上面提到的@John Wu所述。 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

希望本指南有所帮助。

更新正如@Subbu所说:Official guide


3
投票

对我来说工作:

步骤1:从应用程序服务器上的https://www.microsoft.com/en-us/download/details.aspx?id=48137下载并安装Web Installer exe。安装完成后重新启动应用程序服务器。

第2步:在web.config中添加以下更改

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />
</system.web>

第3步:完成第1步和第2步后,它给出了一个错误,“WebForms UnobtrusiveValidationMode需要一个ScriptResourceMapping for'jquery'。请添加一个名为jquery的ScriptResourceMapping(区分大小写)”并解决此错误,我在appsettings中添加了以下键在我的web.config文件中

<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
© www.soinside.com 2019 - 2024. All rights reserved.