2

我禁用了 TLS 1.0。因此,我们尝试在使用 .Net Framework 4.0 的 .Net 应用程序中使用 TLS 1.2。

我在开始时为此添加了代码

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

它在我的本地系统上完美运行。

但我不确定为什么在服务器(Windows Server 2008 R2)上部署代码时它不起作用。我检查了一切。.Net 框架存在于服务器上。但它仍然只在服务器上给出同样的问题。

我在这里有什么遗漏吗?

4

2 回答 2

4

根据这篇文章

.NET 4.0最多支持TLS 1.0同时.NET 4.5支持最多TLS 1.2

但是,如果 .NET 4.5 安装在同一环境中,应用程序目标.NET 4.0仍然可以支持最高 TLS 1.2 。安装在 之上,替换..NET 4.5.NET 4.0System.dll

所以基本上你需要升级你的服务器.Net 4.5来启用TLS 1.2.

此外,您可以简化代码并使其更具可读性:

using System.Net;

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

相关 MSDN 文章:

于 2017-03-20T03:52:35.253 回答
1

如果您想在现有 .NET 4.x 代码中使用 TLS 1.2 而无需更改应用程序代码,您将需要以下内容:

  1. 安装 .NET 框架 4.6 或更高版本。这是默认情况下使用 TLS 1.2 作为协议并结合适当的 Windows 注册表项所必需的。

  2. 设置以下.NET Framework 强加密注册表项

在 32 位和 64 位版本的 Windows 上: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

在 64 位版本的 Windows 上: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

在64 位系统上运行时,32 位应用程序使用WOW6432Node值。

有关更多信息,请参阅:https ://github.com/TheLevelUp/pos-tls-patcher

更新:在应用程序代码中硬编码安全协议真的不是一个好主意。您希望操作系统为您执行此操作。请参阅.NET Framework 的传输层安全性 (TLS) 最佳实践以进一步阅读。

于 2018-03-08T03:20:31.177 回答