由于我刚刚发现RFC 5425需要使用TLS 1.2,并且.NET还不支持它,我想知道是否有任何实现,可能是开源的TLS 1.2协议,如RFC 5246中所定义.
谢谢.
Col*_*nic 75
是的,但您必须在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();
Run Code Online (Sandbox Code Playgroud)
您的客户端使用的是最现代版本的加密协议TLS 1.2
在框中,WebRequest将使用TLS 1.0或SSL 3.
您的客户端正在使用TLS 1.0,它很老,可能容易受到BEAST攻击,并且没有可用的最佳密码套件.用于替换MD5-SHA-1的AES-GCM和SHA256等附加功能不适用于TLS 1.0客户端以及更多现代密码套件.
fan*_*gxi 41
刚刚发现.Net Framework 4.5现在支持TLSv1.2
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs.110).aspx
Jef*_*urs 27
您可以使用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
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 12
我通过切换到最新的.Net Framework来解决我的问题.所以你的目标框架设置你的安全协议.
当你在Web.config中有这个
<system.web>
<httpRuntime targetFramework="4.5"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
你会默认得到这个:
ServicePointManager.SecurityProtocol = Ssl3 | Tls
Run Code Online (Sandbox Code Playgroud)
当你在Web.config中有这个
<system.web>
<httpRuntime targetFramework="4.6.1"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
你会默认得到这个:
ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls
Run Code Online (Sandbox Code Playgroud)
如果您正在处理旧版本的.NET Framework,那么在我们的SecureBlackbox产品中,客户端和服务器组件中都支持TLS 1.2 .SecureBlackbox包含自己的所有算法实现,因此使用哪个版本的基于.NET的框架(包括.NET CF)并不重要 - 在所有情况下,您都将拥有TLS 1.2及最新版本.
请注意,SecureBlackbox不会将TLS 1.2神奇地添加到框架类中 - 而是需要明确使用SecureBlackbox类和组件.
只需下载此注册表项并运行它.它将为.NET框架注册表添加必要的密钥.您可以在此链接获得更多信息.在".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
Run Code Online (Sandbox Code Playgroud)
这是页面的一部分,如果它破坏了它是有用的:
"..默认启用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框架也使用这些值.但是,注册表项将在该系统上的所有已安装的.NET 4.0,4.5,4.5.1和4.5.2应用程序中默认启用TLS 1.2.因此,建议在将此更改部署到生产服务器之前对其进行测试.也可用作注册表导入文件.但是,这些注册表值不会影响设置System.Net.ServicePointManager.SecurityProtocol值的.NET应用程序."
归档时间: |
|
查看次数: |
124408 次 |
最近记录: |