【问题标题】:Unable to use cypher suite on client machine in TLS 1.2无法在 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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多