假设我有一个标准的.NET(4.5)Web应用程序需要使用TLS连接到安全服务器.
我想停止在我的服务器中支持未使用或弱的协议和密码套件,并且只支持客户端也支持的协议(最好是TLS 1.2)
使用的TLS(1.0,1.1或1.2)和/或密码套件的版本是否取决于操作系统或.NET版本?
换句话说,当我的.NET应用程序安装在具有不同操作系统/更新的计算机上时,它是否会使用不同的密码套件或TLS版本?或者.NET 4.5的使用是否确保每个客户端 - 服务器通信上的协议都是相同的?
从.NET 4.7开始,.NET使用操作系统的默认值.
System.Net.Security.SslStream使用的TLS堆栈和HTTP,FTP和SMTP等上层组件允许开发人员使用操作系统支持的默认TLS协议.开发人员不再需要对TLS版本进行硬编码.
在4.7之前,您必须指定要明确使用的TLS版本
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Run Code Online (Sandbox Code Playgroud)
对于.NET 4.7,ServicePointManager.SecurityProtocol(如果没有显式设置)现在返回SystemDefault.
BTW最早支持的.NET版本是4.5.2.但是,大多数系统都有更新的版本,由其他应用程序或Windows Update安装.自4.0以来的每个版本都是以前的二进制替换.
这比我在.NET问题上写的要好得多:https : //stackoverflow.com/a/28333370/4148708
在本质上:
.NET 4.0支持最高TLS 1.0,而.NET 4.5支持最高TLS 1.2
在实践中,如果您不是必须的,我已经看到.NET 4.5和.NET 4.6都默认使用TLS 1.0:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Run Code Online (Sandbox Code Playgroud)
无法评论.NET 4.7,但我认为默认情况下它仍可握手TLS 1.0,因此整个Internet不会突然中断。
.NET 4.7 通过SystemDefaultTlsVersions注册表项使用操作系统的默认值(感谢Panagiotis Kanavos)— 在此版本库中有更多发现。
真正的含义是ServicePointManager.SecurityProtocol现在返回.NET 4.7 SystemDefault。
在操作系统问题上,是的,.NET调用了SCHANNEL,它是Microsoft的安全支持提供程序(以Windows世界的“ OpenSSL”为例)。只要您在Windows Server 2008 R2 +上运行,就适合使用TLS 1.2。
从此综合博客文章(blogs.msdn.microsoft.com)中摘录:
https://github.com/snobu/tls-negotiations
| 归档时间: |
|
| 查看次数: |
2008 次 |
| 最近记录: |