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

时间:2017-08-30 04:33:15

标签: c# security tls1.2 windows-security

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

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

为了进一步挖掘它,我从wireshark收集了日志,我可以看到在“Client hello”和“server hello”之后我可以看到的一台机器上,它启动了密码规范交换,而在测试机器中没有发生。

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

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

Cypher suit list for woking machine

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,也许,我认为,试图连接到需要TLS 1.2的服务......我的记忆很模糊,但我相信我的开发机器上没有问题,我故意在注册表中禁用TLS 1.2以外的所有内容。但是从另一台机器上,它不会连接,因为事实证明,HTTPClient默认情况下试图使用ssl3。我必须先做这件事:

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

答案 1 :(得分:0)

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

相关问题