1. SSL 客户端通过Client Hello 消息将它支持的SSL 版本、加密算法、密钥交换算法、MAC 算法等信息发送给SSL 服务器。如果是新建SSL连接,提交的消息中SSL Session ID为空 ,Sesson ID length 为0 。
2. SSL 服务器确定本次通信采用的SSL 版本和加密套件,并通过Server Hello消息通知给SSL 客户端。SSL 服务器会为本次会话分配新的Session ID,并通过ServerHello 消息发送给SSL 客户端。
8. SSL 客户端计算已交互的握手消息、主密钥的Hash 值,利用自己的私钥对其进行加密,并通过Certificate Verify 消息发送给SSL 服务器。
9. SSL 客户端发送Change Cipher Spec 消息,通知SSL 服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC 计算。
10 .SSL 客户端计算已交互的握手消息(除Change Cipher Spec 消息外所有已交互的消息)的Hash 值,利用协商好的密钥和加密套件处理Hash 值(计算并添加MAC 值、加密等),并通过Finished 消息发送给SSL 服务器。SSL服务器利用同样的方法计算已交互的握手消息的Hash 值,并与Finished 消息的解密结果比较,如果二者相同,且MAC 值验证成功,则证明密钥和加密套件协商成功。
11.同样地,SSL 服务器发送Change Cipher Spec 消息,通知SSL 客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC 计算。
12. SSL 服务器计算已交互的握手消息的Hash 值,利用协商好的密钥和加密套件处理Hash 值(计算并添加MAC 值、加密等),并通过Finished 消息发送给SSL 客户端。SSL 客户端利用同样的方法计算已交互的握手消息的Hash 值,并与Finished 消息的解密结果比较,如果二者相同,且MAC 值验证成功,则证明密钥和加密套件协商成功。