完整的流程:
TLS/SSL双向认证握手过程分析
(1)client_hello
支持的协议版本,比如TLS 1.0;
支持的加密算法(Cipher Specs);
客户端生成的随机数1(Challenge),稍后用于生成"对话密钥"。
(2)server_hello
确认使用的协议版本;
服务器生成的随机数2,稍后用于生成"对话密钥";
确认使用的加密算法; 算法解释: HTTPS背后的加密算法
向客户端提供自己的证书;
请求客服端的证书。
(3)客户端发生给服务端
客户端证书发送给服务端;
client_key_exchange。
(4)客户端发生给服务端
客户端证书校验;
change_cipher_spec:客户端通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信。
(5)服务端向客户端
change_cipher_spec: 验证通过之后,服务器同样发送 change_cipher_spec 以告知客户端后续的通信都采用协商的密钥与算法进行加密通信;
encrypted_handshake_message:服务器也结合所有当前的通信参数信息生成一段数据并采用协商密钥 session secret 与算法加密并发送到客户端;
(6)加密通信
开始使用协商密钥与算法进行加密通信。