[英]TLS 1.2 handshake still possible after only allowing TLS 1.0
我的一个客户在操作系统级别关闭了TLS 1.0。 之后,与我们产品的连接不再起作用。 客户没有使用.NET 4.6.1的最新版本。
由于我们未指定所使用的协议,因此我们依赖默认值。 根据https://support.microsoft.com/zh-CN/help/3069494/cannot-connect-to-a-server-by-using-the-servicepointmanager-or-sslstre的规定, .NET 4.6默认启用TLS 1.2,这将是完美的,也是我们想要的。
我想尝试一些配置,以更好地理解。 我指定了仅在代码级使用以下代码的TLS 1.0:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
为了测试握手,我使用了openssl。 它应该与TLS 1.0完美配合。 但令我惊讶的是,握手也适用于TLS 1.2。
$ openssl s_client -connect localhost:30050 -tls1_2
<..snip..>
SSL-Session:
Protocol : TLSv1.2
<..snip..>
我要监管一些.NET或TLS规则吗? 据我了解,当将TLS 1.0指定为唯一协议时,TLS 1.2应该是不可能的。
mjwills将在评论中询问SecurityProtocol
-Property是否会影响入站或出站连接。
经过一番研究后,我发现了如何禁用SSL后备并且仅将TLS用于.NET中的出站连接? (缓解狮子狗) ,其中有一条评论可以回答这个问题:
如果要从.NET代码启动出站连接 ,例如,从服务器上运行的自定义代码连接到Web服务或API,则只需设置 System.Net.ServicePointManager.SecurityProtocol。 如果您仅运行一个简单的网站,并且仅接受来自浏览器的传入连接,则注册表修复程序就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.