Published on

TLS 协议流程

Authors
  • avatar
    Name
    Pony Ma
    Twitter

应用层协议传输的数据在通过TLS协议时都会被加密,从而保证通信的私密性

TLS 协议流程

TLS协议是可选的,必须配置客户端和服务器才能使用。 一旦客户端和服务端都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据。通过握手, 客户端和服务器协商各种参数用于创建安全连接:

  1. 当客户端连接到支持TLS协议的服务器要求创建安全连接并列出了受支持的密码包(包括加密算法,散列算法等),握手开始
  2. 服务器从该列表中决定密码包,并通知客户端
  3. 服务器发回其数字证书,此证书通常包含服务器的名称、受信任的证书颁发机构和服务器的公钥
  4. 客户端确认其颁发的证书有效性
  5. 为了生成会话密钥用于安全连接,客户端使用服务器的公钥加密随机生成的密钥,将其发送到服务器,只有服务器 才能使用自己的私钥解密
  6. 利用随机数,双方生成加密和解密的对称密钥。这就是TLS协议的握手,握手完毕后的连接是安全的,直到连接关闭, 如果上述任何一个步骤失败,TLS握手过程就会失败,并且断开所有的连接

过程阶段简述

  1. 对等协商支持的TLS版本和支持的密码包
  2. 基于非对称密钥的身份认证,通常是基于PKI证书的身份认证。服务器将其X.509证书发送给客户端, 由客户端验证服务器的身份。如果服务器要验证客户端的证书,则客户端可能会将客户端证书发送给服务器。 但通常只验证服务器,不验证客户端。
  3. 基于对称密钥的数据加密。客户端生成随机数作为会话密钥,并使用服务器公钥(服务器公钥在服务器证书中)加密会话密钥, 最后将已加密的会话密钥发送给服务器。由服务器的私钥解密出会话密钥,最后使用此会话密钥加密数据。 TLS也可以使用预共享密钥作为对称密钥。