双向SSL握手过程

来源:互联网 发布:md5.js用法 编辑:程序博客网 时间:2024/05/16 00:24

 

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 客户端

 

3.SSL 服务器将携带自己公钥信息的数字证书通过Certificate 消息发送给SSL客户端。
4.SSL 服务器发送Certificate Request 消息,请求SSL 客户端将其证书发送给SSL 服务器。
5.SSL 服务器发送Server Hello Done 消息,通知SSL 客户端版本和加密套件协商结束,开始进行密钥交换。
6.SSL 客户端通过Certificate 消息将携带自己公钥的证书发送给SSL 服务器。SSL 服务器验证该证书的合法性。
7.SSL 客户端验证SSL 服务器的证书合法后,利用证书中的公钥加密SSL 客户端随机生成的premaster secret,并通过Client Key Exchange 消息发送给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 值验证成功,则证明密钥和加密套件协商成功。

原创粉丝点击