HTTPS 与 TLS
HTTPS = HTTP + TLS(传输层安全)。面试主线:解决什么问题、握手怎么交换密钥、证书怎么信任。
解决三个问题
| 问题 | 机制 |
|---|---|
| 窃听 | 对称加密(会话密钥加密数据) |
| 篡改 | MAC/哈希校验(完整性) |
| 冒充 | 数字证书(身份认证) |
混合加密体系
- 对称加密(AES):快,适合加密数据,但密钥分发难
- 非对称加密(RSA/ECC):慢,适合交换密钥,公钥公开私钥保密
- 实际方案:非对称交换对称密钥,对称加密数据(混合加密)
TLS 握手(1.2)
TLS 1.2 握手: 非对称换密钥, 对称传数据
握手要点:
- 双方交换随机数 + 客户端生成预主密钥(公钥加密传输),三者派生会话密钥
- 证书验证:客户端验证服务端证书是否可信(证书链 → 根证书)
- 之后所有数据用对称密钥加密(AES),性能可接受
TLS 1.3 的变化
- 握手从 2-RTT 降到 1-RTT(甚至 0-RTT 恢复):ClientHello 里直接带密钥共享(ECDHE)
- 移除旧的不安全套件(RSA 密钥交换、静态 DH)
- 前向保密成为默认:每次握手临时密钥,私钥泄露也解不开历史流量
- 考点:1.3 更快 + 更安全,说“1-RTT + 默认前向保密”即可
证书体系
证书链: 逐级信任到内置根
- 证书 = 公钥 + 域名 + 有效期 + 签发者签名
- 验证:从服务端证书沿签发链查到内置根证书,验签通过即可信
- 自签名证书:不在信任链,浏览器报错(内网/测试用)
- 证书失效/过期是生产事故常见原因(HTTPS 报错排查第一步)
面试追问
- HTTPS 怎么防窃听? 对称加密数据。密钥通过非对称加密安全交换(混合加密)
- TLS 握手做了什么? 协商套件 → 服务端发证书 → 客户端验证并加密传输预主密钥 → 派生会话密钥 → 对称通信
- 证书是干什么的? 证明“我是 example.com”:公钥 + 签名链到内置根。防冒充
- TLS 1.3 改进? 1-RTT 握手(0-RTT 恢复)、默认前向保密、移除弱套件
- 前向保密? 每次握手用临时密钥(ECDHE),长期私钥泄露也解不开历史流量