由于我刚刚发现RFC 5425需要使用TLS 1.2,而.NET尚不支持它,因此我想知道是否存在RFC 5246定义的TLS 1.2协议的任何实现(可能是开源的)。
由于我刚刚发现RFC 5425需要使用TLS 1.2,而.NET尚不支持它,因此我想知道是否存在RFC 5246定义的TLS 1.2协议的任何实现(可能是开源的)。
Answers:
刚刚发现.Net Framework 4.5现在支持TLSv1.2
http://msdn.microsoft.com/zh-cn/library/system.security.authentication.sslprotocols(v=vs.110).aspx
是的,尽管您必须在System.Net.ServicePointManager.SecurityProtocol上手动打开TLS 1.2
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将使用TLS 1.0或SSL 3。
您的客户端使用的TLS 1.0很旧,可能容易受到BEAST攻击,并且没有可用的最佳密码套件。TLS 1.0客户端以及许多更现代的密码套件均无法使用诸如AES-GCM和SHA256之类的替代品来替代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 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
只需下载此注册表项并运行它。它将向.NET Framework注册表添加必要的密钥。您可以在此链接上获得更多信息。在“ .NET 4.5至4.5.2”中搜索“选项2”。
reg文件将以下内容附加到注册表:
[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.ServicePointManager.SecurityProtocol值。”
如果您使用的是.NET Framework的较旧版本,则我们的SecureBlackbox产品中的客户端和服务器组件均支持TLS 1.2 。SecureBlackbox包含所有算法的自己的实现,因此,使用哪个版本的基于.NET的框架(包括.NET CF)都没有关系-在所有情况下,您都将拥有TLS 1.2及其最新版本。
请注意,SecureBlackbox不会将TLS 1.2神奇地添加到框架类中-而是需要显式使用SecureBlackbox类和组件。
.NET Framework 4.6默认情况下使用TLS 1.2。
而且,仅主机应用程序应位于.NET 4.6中,所引用的库可能保留在旧版本中。
您可以按照以下说明在IIS中启用TLS 1.2 。我认为,如果您有一个运行在IIS之上的基于ASP.NET的应用程序,这看起来就足够了,尽管看起来它并不能真正满足您的需求。