「在通信刚开始的时候使用非对称加密算法,解决密钥交换的问题。后续全都使用对称加密进行通信」
握手流程
-
客户端带上自己产生的随机数和支持的加密套件向服务器发出 Client Hello 请求。
-
服务器收到请求后带上自己的随机数以及选择的加密套件返回 Server Hello 信息。在之后服务器发送自己的证书。此时服务器也可要求客户端出示证书。发送完成后发送 Server Hello Done 信息。
-
客户端通过验证服务器证书是否可靠以决定是否继续通信,若不可信则关闭连接。若认为可信客户端则会生成一个新随机数,称为预主密钥(Pre Master Key),用于之后生成会话密钥,通过来自于证书的公钥进行加密提供给服务器。之后客户端会再传递一个 Change Cipher Spec 表示之后信息会使用新的会话密钥(session keys)加密信息和哈希。之后客户端发送 Client finished 握手结束。
-
服务器收到数据后解密得到预主密钥,计算得出会话密钥,然后同样向客户端发送 Change Cipher Spec 和 Server finished。