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

时间:2017-07-28 20:53:57

标签: c# .net tls1.2

我需要使用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?

6 个答案:

答案 0 :(得分:81)

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

Artem所说的是我们已经完成的第一步。我们将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。

答案 1 :(得分:44)

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

batch_size

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

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

答案 2 :(得分:14)

如果您在4.5之前使用.Net,则枚举中不会有Tls12,因此明确提到状态here

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

答案 3 :(得分:12)

需要三个步骤:

  1. 通过在注册表中添加Enabled=0DisabledByDefault=1,明确将SSL2.0,TLS1.0,TLS1.1标记为服务器计算机上的禁止(完整路径为{{1 }})。有关详情,请参见屏幕 registry

  2. 按照以下步骤显式启用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols。分别使用TLS1.2Enabled=1

  3. 注意:验证服务器版本:DisabledByDefault=0不支持Windows Server 2003协议

    1. 仅在应用级别启用TLS 1.2,例如上面提到的@John Wu建议。

      TLS1.2

    2. 希望本指南有所帮助。

      <强>更新 正如@Subbu所说:Official guide

答案 4 :(得分: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步后,它出错,&#34; WebForms UnobtrusiveValidationMode需要一个ScriptResourceMapping用于&#39; jquery&#39;。请添加一个名为jquery的ScriptResourceMapping(区分大小写) &#34;为解决此错误,我在 web.config 文件

中的 appsettings 中添加了以下键:
<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

答案 5 :(得分:0)

PowerBI Embedded需要TLS 1.2。

上述 Etienne Faucher 的答案就是您的解决方案。 快速链接到以上答案... quick link to above answer...https://stackoverflow.com/a/45442874

PowerBI需要TLS 1.2 2020年6月-This Is your Answer-考虑强制IIS运行时达到4.6,以强制您从框架中寻找默认的TLS 1.2行为。上面的答案为您提供了仅更改配置的解决方案。

症状:强制关闭到Microsoft PowerBI Embedded的TCP / IP连接,这突然出现在整个系统中。

这些PowerBI呼叫仅停止处理硬TCP / IP关闭错误,就像防火墙会阻止连接一样。通常,身份验证步骤有效-在您单击特定工作区的服务并报告ID失败时。

This is the 2020 note from Microsoft PowerBI about TLS 1.2 required

PowerBIClient

显示此问题的

方法

GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler强制TLS 1.1 TLS 1.2

搜索错误条款,以帮助人们找到此内容: System.Net.Http.HttpRequestException:发送请求时发生错误 System.Net.WebException:基础连接已关闭:发送时发生意外错误。 System.IO.IOException:无法从传输连接读取数据:现有连接被远程主机强行关闭。