https 工作流程

110 阅读2分钟

定义

http 的安全版本,通过加密和身份验证机制来保护数据安全传输

流程

1. 握手过程

  • 客户端向服务器发送一个 clientHello 信息,clientHello包含加密套件,支持的TLS版本等信息
  • 服务端接收到信息后,在客户端提供的加密套件中选一组加密算法,将选中的算法发送给客户端
  • 客户端和服务器协商一个 预主密钥
  • 客户端和服务器使用预主密钥 生成一个 主密钥

备注: 主密钥 用于后续通信中对称加密,用于加密和解密数据

2. 身份验证和密钥交换

  • 服务器将数字证书发给客户端。证书中有服务器的公钥和其他身份信息(域名、过期时间等)
  • 客户端拿到后验证,签发机构,证书域名和服务器域名是否一致,过期时间等
  • 采用2.1 中的公钥+主密钥,客户端生成一个后续的共享密钥
  • 握手结束了,客户端给服务器发送 finished;表示握手结束

备注: 服务器中公钥 是证书的一部分,用于验证服务器身份,

3. 数据传输

  • 加密通信,客户端和服务器使用共享密钥对通信加密; 对称加密,加密算法AES
  • 数据完整性,采用消息认证码MAC保证,防止被篡改

4. 结束连接

  • 正常情况,数据交换完毕后,发送CloseNotify 来正常关闭
  • 如果有异常,一方发送警告消息,然后关闭链接

问:

1. 如果证书过期了,客户端提示了一个安全错误页面,如果用户确认风险继续使用,如何处理

  • 密钥协商,客户端和服务器采用1.3中生成的预主密钥生成主密钥,用另外的算法生成2.3中需要的会话密钥
  • 采用生成的密钥,对数据采用对称加密,然后数据传输

2. 对称加密和 非对称加密使用场景

  • 非对称加密:用于密钥交换和身份验证
  • 对称加密:通信中加密数据