我正在使用TLS1.3通过java客户机访问TLS1.3测试服务器"https://tls13.pinterjann.is“。如html响应所示,一切看起来都很好:
我不明白的是:为什么Wireshark在概述协议TLSv1.3中显示,而在详细版本TLS 1.2中显示呢?
Wireshark只是显示错误的版本,还是实际使用了TLS 1.2?
提前感谢您的支持。
发布于 2018-12-31 05:16:30
对不起,由于混淆,我遗漏了确切的TLS 1.3语义:例如,在Client中,字段" version“必须包含固定值0x0303 (TLS 1.2),而首选版本包含在扩展”支持的版本“中。
来自RFC 8446 (TLS 1.3规范):
struct {
ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */
Random random;
opaque legacy_session_id<0..32>;
CipherSuite cipher_suites<2..2^16-2>;
opaque legacy_compression_methods<1..2^8-1>;
Extension extensions<8..2^16-1>;
} ClientHello;
legacy_version:在以前版本的TLS中,此字段用于版本协商,表示客户端支持的最高版本号。经验表明,许多服务器没有正确地实现版本协商,从而导致“版本不容忍”,即服务器拒绝版本号高于其支持的其他可接受的ClientHello。在TLS1.3中,客户端在"supported_versions“扩展(第4.2.1节)中指示其版本首选项,而legacy_version字段必须设置为0x0303,这是TLS1.2的版本号。TLS 1.3 ClientHellos被识别为具有0x0303的legacy_version和以0x0304作为其中所指示的最高版本的supported_versions扩展。(有关向后兼容性的详细信息,请参阅附录D。)
这与Wireshark展示的内容一致:
https://networkengineering.stackexchange.com/questions/55752
复制相似问题