定义
http 的安全版本,通过加密和身份验证机制来保护数据安全传输
流程
1. 握手过程
- 客户端向服务器发送一个 clientHello 信息,clientHello包含加密套件,支持的TLS版本等信息
- 服务端接收到信息后,在客户端提供的加密套件中选一组加密算法,将选中的算法发送给客户端
- 客户端和服务器协商一个 预主密钥
- 客户端和服务器使用预主密钥 生成一个 主密钥
备注: 主密钥 用于后续通信中对称加密,用于加密和解密数据
2. 身份验证和密钥交换
- 服务器将数字证书发给客户端。证书中有服务器的公钥和其他身份信息(域名、过期时间等)
- 客户端拿到后验证,签发机构,证书域名和服务器域名是否一致,过期时间等
- 采用2.1 中的公钥+主密钥,客户端生成一个后续的共享密钥
- 握手结束了,客户端给服务器发送 finished;表示握手结束
备注: 服务器中公钥 是证书的一部分,用于验证服务器身份,
3. 数据传输
- 加密通信,客户端和服务器使用共享密钥对通信加密; 对称加密,加密算法AES
- 数据完整性,采用消息认证码MAC保证,防止被篡改
4. 结束连接
- 正常情况,数据交换完毕后,发送CloseNotify 来正常关闭
- 如果有异常,一方发送警告消息,然后关闭链接
问:
1. 如果证书过期了,客户端提示了一个安全错误页面,如果用户确认风险继续使用,如何处理
- 密钥协商,客户端和服务器采用1.3中生成的预主密钥生成主密钥,用另外的算法生成2.3中需要的会话密钥
- 采用生成的密钥,对数据采用对称加密,然后数据传输
2. 对称加密和 非对称加密使用场景
- 非对称加密:用于密钥交换和身份验证
- 对称加密:通信中加密数据