无法在 TLS 1.2 中的客户端计算机上使用密码套件

Posted

技术标签:

【中文标题】无法在 TLS 1.2 中的客户端计算机上使用密码套件【英文标题】:Unable to use cypher suite on client machine in TLS 1.2 【发布时间】:2018-02-07 16:03:49 【问题描述】:

我有 2 台台式机(Windows 7)。一台是我的开发机,另一台是我的测试机。我做了一个桌面应用程序。它正在使用 Web 请求连接服务器。我正在使用 TLS1.2 进行连接,并且 HTTPClient (C#) 已用于编码级别。

我的问题是服务器期待 TLS1.2 连接并且只允许密码套装 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384。现在我的开发机器(也有相同的操作系统,即 windows 7 和相同的 .Net 框架 4.6.1)工作正常,而我的测试机器却没有。

为了进一步挖掘它,我从wireshark收集了日志,我可以看到在一台机器上我可以看到“客户端你好”和“服务器你好”之后,它开始了密码规范交换,而它在测试机器上没有发生。

我还尝试查看密码套件列表,似乎该套件在两台机器上都可用。但是,我的测试机器中的密码套装数量较少(可能是缺少自动更新的情况)。我在这里附上了所有的屏幕截图。有人可以指导我这里出了什么问题。

工作机器的屏幕截图是:-- For working machine

Cypher suit list for woking machine

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,我想可能是尝试连接到需要 TLS 1.2 的服务...我的记忆模糊不清,但我相信我的开发机器上没有问题,我在那里故意禁用了注册表中除 TLS 1.2 之外的所有内容。但是从另一台机器上,它不会连接,因为事实证明 HTTPClient 默认尝试使用 ssl3。我必须先这样做:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

【讨论】:

【参考方案2】:

在安装了所有来自 Microsoft 的 Hot Fix 更新后,这个问题终于得到了解决。我的开发机器一直在更新,而测试 VM 是使用 Windows 7 创建的,这就是为什么没有热修复和自动更新。

【讨论】:

以上是关于无法在 TLS 1.2 中的客户端计算机上使用密码套件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WebSphere 7.0.0.45 中使用强密码套件配置 TLS 1.2 协议?

windows 2008 R2 出现身份验证错误。 无法连接到本地安全机构

Powershell CREDSSP 和 TLS 1.2

.NET 4.5.1 中的 WCF 客户端:使用 WebRequest 时如何启用 TLS 1.2?

在高级设置中启用 TLS 1.0、TLS 1.1 和 TLS 1.2,

请求被中止:无法创建 SSL/TLS 安全通道