【问题标题】:TLS Version mismatch(?)TLS 版本不匹配(?)
【发布时间】:2016-12-09 07:26:56
【问题描述】:

假设我作为客户端支持 TLS V1.0、1.1 和 1.2。 远程站点支持 TLS V1.0 和 1.1。 双方支持相同的密码。

我的问题:

1 - 据我了解,我将始终使用可用的最高 TLS 版本启动通信。在那种情况下,我将如何与对方建立联系?

2 - 以下是上述客户端和服务器之间的 Wireshark CLIENT HELLO 捕获。

TLSv1.1 Record Layer: Handshake Protocol: Client Hello
    Content Type: Handshake (22)
    Version: TLS 1.2 (0x0303)
    Length: 172
    Handshake Protocol: Client Hello
        Handshake Type: Client Hello (1)
        Length: 168
        Version: TLS 1.2 (0x0303)
        Random
        Session ID Length: 0
        Cipher Suites Length: 52
        Cipher Suites (26 suites)
        Compression Methods Length: 1
        Compression Methods (1 method)
        Extensions Length: 75
        Extension: server_name
        Extension: elliptic_curves
        Extension: ec_point_formats
        Extension: signature_algorithms
        Extension: SessionTicket TLS
        Extension: renegotiation_info

此连接尝试最终会产生“无法创建 SSL/TLS 安全通道”。我怀疑这与“TLSV1.1 Record Layer”和“Version: TLS 1.2 (0x0303)”有关。这可能是连接失败的原因吗?

【问题讨论】:

    标签: ssl https tls1.2


    【解决方案1】:

    猜测你有一个旧版本的 Wireshark,因为它报告 TLSv1.1,但在随后的数据包中,Record 和 ClientHello 都清楚地指示 TLSv1.2。保存您的捕获,升级 Wireshark,然后重新加载捕获。

    更新:确保您的 SSL\TLS 握手完成很重要;否则,由于某种原因,Wireshark 会在“协议”字段中报告不正确的 TLS 协议版本。

    【讨论】:

      【解决方案2】:

      有两个 TLS 版本随 Client Hello 消息一起发送。第一个是记录层版本,它描述了您用于通信的 TLS 版本。第二个版本是Client Hello值,表示客户端支持的最大版本。

      我在您的 Wireshark 捕获中看到了三个 TLS 版本。不过,我认为“TLSv1.1 Record Layer: Handshake Protocol: Client Hello”中对 1.1 版的引用是错误的。

      您的客户端似乎正在发送带有版本 1.2 的客户端问候,该版本在 1.2 的记录层版本中指示。服务器不支持 1.2 版本,在记录层拒绝。为了解决这个问题,客户端可以在版本 1.0 记录中发送版本 1.2 Client Hello。这将允许服务器使用它支持版本 1.1 的版本 1.0 进行通信,并且后续通信将使用版本 1.1。

      【讨论】:

        【解决方案3】:

        客户端以 ClientHello 开始握手,其中显示了它支持的最佳版本,即在本例中为 TLS 1.2。然后,服务器使用服务器支持的最佳版本回复 ServerHello,该版本等于或小于客户端提供的版本(即在您的情况下为 TLS 1.1)。如果客户端不愿意接受此版本(即客户端配置为仅支持 TLS 1.2 且仅此而已),它将关闭连接。

        【讨论】:

        • 但是为什么它说“TLSV1.1记录层”然后是“版本:TLS 1.2”?
        • @gilfalko:我不知道为什么它在您的 Wireshark 版本中显示“TLSv1.1 记录层” - 在我的版本中它显示“TLSv1.2 记录层”,因为记录层协议适合在您的初始示例中是 TLS 1.2。在您的第二个示例中,记录层协议是 TLS 1.0,而 ClientHello 协议版本是 TLS 1.2。尽管如此,这一行只是以下数据的总结,即真实的信息只在细节中。
        猜你喜欢
        • 2021-11-19
        • 1970-01-01
        • 2019-06-27
        • 2012-04-22
        • 2023-03-19
        • 2019-01-12
        • 2020-11-15
        • 2011-10-07
        • 1970-01-01
        相关资源
        最近更新 更多