我有两个从同一客户端发送到不同服务器的 Client Hello 消息,我的客户端支持 TLS 1.2 和 TLS 1.3,如客户端 hello 支持的版本中所示。
而在第二条消息中,客户端选择记录层版本 TLS 1.2。(客户端仅发送 hello 并收到警报)
客户真的选择了版本吗?如果是这样,如果客户端尚未收到 Server Hello 消息,他如何决定版本。
或者Wireshark是否根据他在服务器问候中看到的设置版本?
这该如何解释呢?
或者wireshark是否根据他在服务器问候中看到的设置版本?
是的。该标题行是 Wireshark 对消息的摘要。您可以在消息的详细内容中看到,这两种情况:
TLS 1.3 规范解释了这些奇怪的版本号指示的原因。它主要是关于向后兼容性,允许客户端宣传 TLS 1.3 支持,同时仍然能够联系仅支持旧版本的服务器。向后兼容性限制不仅与服务器有关,还与防火墙和其他网络设备有关,这些设备只允许它们认为是“良好”TLS 的流量通过。相当多的软件会拒绝高于他们所知道的“好”版本号的版本号,如果 TLS 1.3 使用逻辑版本号,这将阻止 TLS 1.3 流量。
顺便说一句,TLS 1.0 的版本看起来像 3.1、TLS 1.1 的 3.2、TLS 1.2 的 3.3 和 TLS 1.3 的 3.4 的原因是相似的。除了名称之外,TLS 1.0 本质上就是 SSL v3.1,因为与 SSL 3.0 相比,它只进行了相当小的修改,并且将主要版本保持在 1 使向后兼容性更容易。TLS 1.3 与以前的版本有很多差异,因此将其称为 2.0 是有意义的,但协议内的主要版本指示必须保持为 1,以避免被过于受限的软件拒绝。
Wireshark 在以下数据包的上下文中看到 ClientHello 。如果握手结果是 TLS 1.2 的通用版本,它将显示 TLS 1.2 记录层,如果是 TLS 1.3,它将显示 TLS 1.3 记录层。如果仅将数据包导出到 ClientHello,则 Wireshark 尚无法查看将使用哪个版本(因为尚未收到服务器回复),然后 Wireshark 甚至将仅显示 TLSv1 记录层,即使这正是与之前相同的 ClientHello:
归档时间: |
|
查看次数: |
7509 次 |
最近记录: |