What version of TLS is used in a .NET application installed on different operating systems
说我有一个标准的.NET(4.5)的Web应用程序需要连接到一个安全的服务器使用TLS。
我想停止支持未或弱密码套房的协议与服务器和客户端的支持,其中一只(最好是支持TLS 1.2)
这一版本的TLS 1.0,1.1和1.2)和/或使用密码套房depend on the或。NET版本的操作系统吗?
换句话说,我想使用一个不同的.NET应用程序的密码套件或TLS版本安装在不同的机器,当操作系统/更新?在使用或不ensures .NET 4.5,在每一个客户端服务器通信协议将是相同的吗?
从.NET 4.7开始,.NET使用操作系统的默认值。
The TLS stack, which is used by System.Net.Security.SslStream and up-stack components such as HTTP, FTP, and SMTP, allows developers to use the default TLS protocols supported by the operating system. Developers need no longer hard-code a TLS version.
在4.7之前,必须指定要显式使用的TLS版本
1 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 |
对于.NET 4.7,
btw最早支持的.NET版本是4.5.2。但是,大多数系统都会有更新的版本,由其他应用程序或Windows Update安装。自4.0以来的每个版本都是以前版本的二进制替换。
这是一个比我在.NET问题上写的更好的答案:https://stackoverflow.com/a/28333370/4148708
本质上:
.NET 4.0 supports up to TLS 1.0 while .NET 4.5 supports up to TLS 1.2
在实践中,我看到.NET 4.5和.NET 4.6都默认为TLS 1.0,如果您不需要这样做:
1 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 |
can't comment on.NET 4.7 but I would assumed it still handshakes tls 1.0 by default so the whole internet does not break..NET 4.7通过
这实际上意味着对于.NET 4.7,
在操作系统问题上,是的,.NET调用了Schannel,这是微软的安全支持提供商(想想Windows世界的"openssl")。只要您在Windows Server 2008 R2+上运行,就可以使用TLS 1.2。
从此综合博客文章(blogs.msdn.microsoft.com)中提取:
这里提供了一些进一步的研究(我自己的研究)—https://github.com/snobu/tls-谈判