TLS 握手

  1. 第一次握手:客户端发送发送支持的加密算法和 hash 算法,请求证书
  2. 第二次握手:服务器选择一个加密算法和 hash 算法,同时把证书发给客户端。证书中包括:颁发日期、签发机构、公钥、域名等信息
  3. 第三次握手:客户端收到证书后,首先检查证书的有效性,如果有效,则会生成一个密钥,利用公钥将该密钥加密。同时利用 hash 算法计算握手信息,使用对称加密算法将 hash 加密。将加密后的信息发给服务器端
  4. 第四次握手:服务器端利用私钥解密得到对称加密的密钥,同时解密握手信息,验证和客户端发过来的是否一致。如果一致,则利用 hash 算法计算握手信息,使用对称加密算法加密,发给客户端
  5. 客户端利用密钥解密,利用 hash 算法计算握手信息,对比服务端发过来的 hash 值。如果相同,则握手结束,此时可以开始利用密钥传输数据。

TLS 握手一共四次,第四次握手后,客户端已经确定服务器是否拿到正确的密钥。

利用 hash 算法计算握手信息来确保服务器端收到的密钥是正确的,等于是给服务器端发送一个测试数据,让其测试密钥的正确性。一种手段而已。

TLS 握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。

如何验证证书有效性

  1. 根据证书有效期
  2. 判断是否是权威机构颁发的
  3. 验证证书数字签名
  4. 对比证书的域名