Https请求完整流程
Client Hello
- TLS版本
TLSv1.2也是SSLv3.2.这是SSL客户端能够支持的SSL最高版本,主版本号3,次版本号2。TLS当前的版本如下:
MajorVersion | Minor Version | Version Type |
3 | 0 | SSLv3 |
3 | 1 | TLS1.0 |
3 | 2 | TLS1.1 |
3 | 3 | TLS1.2 |
最后使用什么版本,得由服务端决定。如果服务端不支持的话,客户端得降低版本。
- 随机数
加密数据用的主密钥,需要客户端和服务端一起协商出来。后面服务端Server Hello阶段也会生成一个随机数。
Random Bytes:351130f119e7034544e23b1de1a824f8070f6ddeb9524c22c2b92146
- 会话ID
Seesion ID是可以重用的,具体看服务端资源和支持情况。如果要复用Seesion ID,SSL服务端需要维护连接的状态和上次握手成功留下的加密信息。如果当前会话ID为0,表示这是第一次访问该地址,会话ID尚未创建,客户端没有记录,这里为0。如果客户端保存了Session ID的信息,下次发起SSL请求的时候会带上。
- 加密套件
客户端可以支持的密码套件列表,这些套件列表会根据优先级排序。每一个套件代表一个密钥规格。以"TLS"开头,接着是密钥交换算法,然后用"WITH"连接加密算法和认证算法。一个加密套件有这么几个内容:密钥交换算法、加密算法(会带有支持的最高密钥位数)、认证算法还有加密方式。
密钥交换算法用在SSL握手阶段的交换协商好的对称密钥的阶段,为非对称加密,例如:
1)EC Deffie-Hellman密钥交互算法。这里会被缩写成ECDHE,也称为DH加密;
2)RSA密钥加密算法
- 压缩算法
- 扩展字段