在.NET Framework 4.0中使用TLS 1.2的问题

时间:2017-01-05 06:24:23

标签: asp.net-mvc .net-4.0 windows-server-2008-r2 tls1.2 aaa-security-protocol

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

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

<meta property="og:image:secure_url" content="static/screenshot.png" />

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

但我不确定为什么在服务器(Windows Server 2008 R2)上部署代码时它无效。我查了一切。 .Net框架存在于服务器上。但它仍然只在服务器上提供相同的问题。

我在这里找不到任何东西?

2 个答案:

答案 0 :(得分:4)

根据this post

  

.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.0之上,替换System.dll

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

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

using System.Net;

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

相关的MSDN文章:

答案 1 :(得分:0)

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

  1. 安装.NET framework 4.6或更高版本。默认情况下,需要使用TLS 1.2作为协议并结合正确的Windows注册表项。

  2. 设置以下.NET Framework strong cryptography registry keys

  3. 在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

    更新: 在应用程序代码中对安全协议进行硬编码确实不是一个好主意。您希望操作系统为您执行此操作。有关详细信息,请参阅Transport Layer Security (TLS) best practices with the .NET Framework