第一阶段:
客户端向服务器端发送TCP请求,建立起TCP连接后,客户端向服务器发送client hello消息,传送客户端支持的最高SSL协议的版本号、随机数、加密算法列表,以及其他所需要的信息。
第二阶段:
服务器向客户端发送包含其证书的Certificate消息。证书中所携带服务器的公钥,用于加密后面消息中预主秘钥
证书内容:
版本号
序列号
证书签名算法
证书颁发者信息
有效期
证书持有者信息
公钥信息
扩展域
证书签名
第三阶段与第四阶段
服务器发送完Certificate消息后继续发送Server Key Exchange和Server Hello Done消息,Server Key Exchange消息中包括秘钥交换算法所需要的额外参数Server Hello Done消息表示服务器已经发送完此阶段的全部信息
客户端发送Client Key Exchange和Change Cipher Spec消息,Client Key Exchange包含使用服务器RSA公钥加密过的随机Pre_Master_Secret,该参数用于后续生成主密钥;Change Cipher Spec消息告诉服务器,接下来的消息将采用新协商的加密套件和秘钥进行通信,并通知客户端到服务器的握手过程结束
接着服务器同样发送Change Cipher Spe消息通知服务器到客户端的握手过程结束,并发送一个加密的握手数据Encryted Handshake Message消息,客户端收到消息解密后进行验证,验证通过则说明握手过程中数据没有被篡改过,也说明服务器是之前交换证书的持有者,现在双方可以开始加密通信