TLS 1.2是否有.NET 实现?

因为我刚刚发现 RFC 5425需要使用 TLS 1.2。NET 还不支持它,我想知道是否有任何实现,可能是开源的,TLS 1.2协议,如 RFC 5246中定义的。

137043 次浏览

您可以按照 这些指示在 IIS 中启用 TLS 1.2。如果您有一个运行在 IIS 之上的基于 ASP.NET 的应用程序,那么我认为这就足够了,尽管它看起来并不能真正满足您的需求。

The latest version of SSPI (bundled with Windows 7) has an implementation of TLS 1.2, which can be found in Schannel.dll

如果处理的是。NET 框架,那么我们的 SecureBlackbox 产品在客户端和服务器组件中都支持 TLS 1.2。SecureBlackbox 包含它自己的所有算法的实现,所以不管是哪个版本的。使用的基于 NET 的框架(包括。NET CF)-您将拥有 TLS 1.2,并且在所有情况下都有最新的补充。

请注意,SecureBlackbox 不会神奇地将 TLS 1.2添加到框架类中——相反,您需要显式地使用 SecureBlackbox 类和组件。

Yes, though you have to turn on TLS 1.2 manually at 安全协议

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // comparable to modern browsers
var response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse();
var body = new StreamReader(response.GetResponseStream()).ReadToEnd();

你的客户使用的是 TLS 1.2最新版本的安全协议


跳出框框,WebRequest will use TLS 1.0 or SSL 3

你的委托人在吸毒 TLS 1.0, which is very old, possibly susceptible 而且没有最好的密码 套件可在它。增加像 AES-GCM,和 SHA256 TLS 1.0客户端不能替换 MD5-SHA-1 以及更多的现代密码组件。

您可以使用 SchUseStrongCrypto 注册表设置要求所有。NET 应用程序默认使用 TLS 1.2而不是1.0。

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001


[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

只需下载这个 注册表项并运行它。它将向.NET 框架注册表添加必要的键。 你可以在这个 链接中找到更多的信息。在“ .NET 4.5到4.5.2”中搜索“选项2”。

注册文件将下列内容附加到注册表:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001


[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

这是该页面中有用的部分,以防出现故障:

" ..默认情况下,在不修改源代码的情况下启用 TLS 1.2,将以下两个注册表项中的 SchUseStrongCrypto DWORD 值设置为1,如果它们不存在则创建它们: “ HKEY _ LOCAL _ MACHINE SOFTWARE Microsoft.NETFramework v4.0.30319”和“ HKEY _ LOCAL _ MACHINE SOFTWARE Wow6432Node Microsoft.NETFramework v4.0.30319”。虽然这些注册表项中的版本号是4.0.30319,但是。NET 4.5、4.5.1和4.5.2框架也使用这些值。但是,这些注册表项将在所有安装中默认启用 TLS 1.2。NET 4.0、4.5、4.5.1和4.5.2应用程序。因此,建议在将此更改部署到生产服务器之前对其进行测试。这也可以作为注册表导入文件使用。但是,这些注册表值不会影响。NET 应用程序设置系统。网。ServicePointManager.SecurityProtocol 值。 "

.NET Framework 4.6默认使用 TLS 1.2。

此外,只有主机应用程序应该在.NET 4.6中,引用的库可能保留在旧版本中。

我通过切换到最新的.Net Framework 来解决我的问题。所以你的目标 Framework 设置了你的安全协议。

当你在 Web.config 中有这个的时候

<system.web>
<httpRuntime targetFramework="4.5"/>
</system.web>

默认情况下你会得到:

ServicePointManager.SecurityProtocol = Ssl3 | Tls

当你在 Web.config 中有这个的时候

<system.web>
<httpRuntime targetFramework="4.6.1"/>
</system.web>

默认情况下你会得到:

ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls

as mentioned 给你 you can just add this line

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;