不同的秘钥交换算法,握手过程可能略有差别
- 上文对HTTPS四次握手的学习
SSL/TLS Secure Sockets Layer/Transport Layer Security 协议握手过程
四次通信:请求服务端公钥 2次 秘钥协商 2次
(1)ClientHello请求
客户端向服务端发送clientHello请求,请求秘钥,请求内容包括【cli支持的SSL/TLS版本号,cli生成的随机数c,cli支持的加密方式】
(2)serverhello
对ClientHello请求的回复,包括
1) 确认SSL/TLS版本号
2)服务端生成的随机数 s
3)确认密码套件
4)数字证书 (理解为s公钥的摘要用ca私钥加密+s公钥 )
(3)客户端回应
客户端会验证公钥的合法性,如果真实,
1)cli使用s公钥加密一个随机数
2)加密通信算法改变通知(以后加密通信)
3)之前的握手数据摘要 (没有公钥加密)
双方各自使用三个随机数生成通信秘钥
(4)服务端回应
1)加密通信算法改变通知
2)之前所有握手报文摘要
- 抓包看四次握手
请求百度
正常的抓包
(1). 第一次握手数据包
(2) 第二次握手
(3)第三次握手
(4)第四次握手
- 客户端验证证书过程
证书hash–>私钥签名
证书哈希==?== 公钥解密签名
4. DH密钥交换
5. RSA密钥交换缺点
不支持前向保密性