我禁用了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框架存在于服务器上。但它仍然只在服务器上提供相同的问题。
我在这里找不到任何东西?
答案 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而不更改应用程序代码,则需要以下内容:
安装.NET framework 4.6或更高版本。默认情况下,需要使用TLS 1.2作为协议并结合正确的Windows注册表项。
在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。