关于 TLS Client_Hello 版本的问题分析
一、 报文结构
如上图,TLS 数据结构由Content Type 、Version、 Length、fragment四部分构成,Version在 Record Layer 和Handshake Protocol中均有出现。
RFC 5246 6.2.1 定义的数据结构
Record Layer中的version定义如下:
RFC 5246 6.2.1 record layer Version的描述
Record Layer 中的Version为此报文所采用的TLS 协议版本:
Client Hello中的client_version定义如下:
RFC 5246 7.4.1.2 record layer Version的描述
Client_version为客户端所希望采用的通信协议。
二、 报文解析
原始报文
**科来改变两处version的值**
加工报文
Client报文的封装和解析与Version协议版本无关,即使上下version均修改后,报文仍然可以得到正确的解析。
与之对应的,DTLS报文的封装与解析,与Version相关,修改为无法识别的Version后将无法正确解析,如下图:
原始报文
科来改变record layer version的值
加工报文
对此,RFC 5246 E.1中解释如下:
RFC 5246 E.1
SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2保持兼容的clienthello数据格式,只要保持兼容的数据格式,即使未来出现更高的tls 协议版本,服务器也能够进行处理。文章来源:https://www.toymoban.com/news/detail-776407.html
三、 Version 版本问题
以上可知,因为client_hello的兼容性,无论Record Layer使用哪种TLS协议版本,client_hello数据报文均能够得到有效的解析,最终完成数据通信过程中的TLS协议版本协商。
对于Record Layer常使用TLS 1.0版本的协议,RFC 5246 E.1解释如下:
RFC 5246 E.1
一些服务器没有正确的实现version协商,有一些有问题的TLS 1.0服务器,当客户提供比TLS 1.0更高的版本时,它们会简单地关闭连接。
结论:ClientHello报文的解析与tls版本无关,客户端与服务器进行TLS握手时,因需考虑服务器兼容问题,会先以TLS 1.0发送client hello完成version协商。文章来源地址https://www.toymoban.com/news/detail-776407.html
到了这里,关于关于 TLS Client_Hello 版本的问题分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!