繁体   English   中英

仅允许TLS 1.0后,仍可以进行TLS 1.2握手

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM