tls握手过程

373 阅读1分钟

tls握手过程.webp

SSL / TLS 握手详细过程

  1. "client hello"消息: 客户端通过发送"client hello"消息向服务器发起握手请求,该消息包含了客户端所支持的 TLS 版本和密码组合以供服务器进行选择,还有一个"client random"随机字符串。

  2. "server hello"消息: 服务器发送"server hello"消息对客户端进行回应,该消息包含了数字证书,服务器选择的密码组合和"server random"随机字符串。

  3. 验证: 客户端对服务器发来的证书进行验证,确保对方的合法身份,验证过程可以细化为以下几个步骤:

    1. 检查数字签名
    2. 验证证书链 (这个概念下面会进行说明)
    3. 检查证书的有效期
    4. 检查证书的撤回状态 (撤回代表证书已失效)
  4. "premaster secret"字符串: 客户端向服务器发送另一个随机字符串"premaster secret (预主密钥)",这个字符串是经过服务器的公钥加密过的,只有对应的私钥才能解密。

  5. 使用私钥: 服务器使用私钥解密"premaster secret"。

  6. 生成共享密钥:客户端和服务器均使用 client random,server random 和 premaster secret,并通过相同的算法生成相同的共享密钥 KEY

  7. 客户端就绪: 客户端发送经过共享密钥 KEY加密过的"finished"信号。

  8. 服务器就绪: 服务器发送经过共享密钥 KEY加密过的"finished"信号。

  9. 达成安全通信: 握手完成,双方使用对称加密进行安全通信。