仅允许TLS 1.0

时间:2018-02-06 12:07:56

标签: c# .net ssl cryptography tls1.2

我的一位客户在操作系统级关闭了TLS 1.0。之后,与我们的产品的连接不再起作用。客户没有使用.NET 4.6.1的最新版本。

由于我们没有指定使用的协议,因此我们依赖于默认值。根据{{​​3}} .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是不可能的。

1 个答案:

答案 0 :(得分:2)

如果SecurityProtocol - 属性影响入站或出站连接,则会在评论中发出错误信息。

经过一些研究后,我发现帖子How do I disable SSL fallback and use only TLS for outbound connections in .NET? (Poodle mitigation)有评论可以回答这个问题:

如果您要从.NET代码启动出站连接,只需要设置 System.Net.ServicePointManager.SecurityProtocol,例如从服务器上运行的自定义代码连接到Web服务或API。如果您只运行一个简单的网站,并且只接受来自浏览器的传入连接,那么注册表修复就足够了。