更新.NET Web 服务以使用 TLS 1.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?

307991 次浏览

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

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

或使用 TLS 1.1或以上向下兼容:

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

需要采取三个步骤:

  1. 通过将 Enabled=0DisabledByDefault=1添加到注册表中(完整路径为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols) ,显式标记 SSL2.0、 TLS1.0和 TLS1.1为服务器机器上的禁止。详情见屏幕 registry

  2. 按照1中的步骤显式启用 TLS1.2。只需分别使用 Enabled=1DisabledByDefault=0

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

  1. 只在应用程序级别启用 TLS1.2,就像@JohnWu 上面建议的那样。

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

希望这本指南有帮助。

更新 正如@Subbu 提到的: 官方指南

我们实际上刚刚将.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。

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

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

对我来说,以下方法奏效了:

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

步骤2: 在 < strong > 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 UnottrusiveValidationMode 需要一个针对“ jquery”的 ScriptResourceMapping,请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping”,为了解决这个错误,我在 Web.config文件中的 应用程序设置中添加了下面的键

<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

PowerBI 嵌入式需要 TLS 1.2。

以上 艾蒂安 · 福彻给出的答案就是你的解决方案。 快速链接到以上答案... 快速链接到以上答案..。 (https://stackoverflow.com/a/45442874)

PowerBI 需要 TLS 1.2 June 2020-这就是你的答案-考虑强制您的 IIS 运行时达到4.6以强制您正在从框架中寻找的默认 TLS 1.2行为。上面的答案提供了一个仅配置更改的解决方案。

症状 : 被迫关闭拒绝 TCP/IP 连接到微软 PowerBI 嵌入式,只是突然出现在你的系统。

这些 PowerBI 调用只是停止使用 Hard TCP/IP Close 错误,就像防火墙会阻止连接一样。通常,身份验证步骤是有效的——当您为特定的工作区点击服务并报告 id 时,它就会失败。

这是 Microsoft PowerBI 关于 TLS 1.2的2020说明

PowerBIClient

显示这个问题的方法

GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync 微软 HttpClientHandler Force TLS 1.1 TLS 1.2

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

使用.Net 4.6或更高版本更新服务器将使用 TLS 1.2。

这是通过我们的一个控制台应用程序故障排除一些失败的电子邮件问题发现的。

服务器只安装了.Net 4.5,而且电子邮件正在失败。

在我的本地工作站,我有.Net 4.6,当运行控制台应用程序,电子邮件没有失败。

因此,我们将控制台应用程序移动到一个具有。净值4.6,没有改变任何东西,电子邮件再次工作。