连接过程步骤
- 客服端向服务服务器端发送可选的加密协议、版本以及客服端随机数。
- 服务端收到客户端发起的请求后,从中选择自己支持的加密协议及其版本,并保留客户端的发的客户端随机数,然后将选择的后的结果发送给客户端,与其一起发送的还有服务端随机数。
- 服务端向客户端发送验证身份的证书。
- 客户端收到证书,会进行验证,如果验证成功,则会向服务器发送pre_master_secret,此次发送时加密发送,采用之前的第一步过程确认的加密方式加密传输。然后客户端和服务器端分别通过客户端随机数、服务器端随机数、pre——master_secret这三个东西计算出Master Secret,这个两个东西不相互交互,但两者的值相同。然后利用Master secret计算出客户端加密秘钥、服务器端加密秘钥、客户端MAC secret、服务端MAC secret。
- 客户端将通知服务器端使用加密通信。
- 客户端发送finished(finished的内容就是指之前各个步骤的流程),来验证通信是否完成。
- 服务器端收到后,也会发送通知,将使用加密通信,
- 服务器端发送finished。
服务器证书
服务器证书中包含了以下几个关键信息:
- 服务器公钥,由于网路不具有确定性和安全性,故此需要服务器公钥的签名。
- 服务器公钥的签名。
- 证书签发机构的公钥。
- 同理还需要证书签发机构的公钥的签名。
- 服务器的主机名。