跳到主要内容
约 3 分钟3 张卡

TLS

TLS 为通信提供机密性、完整性和端点认证。HTTPS 用安全通道传输 HTTP。本文以 TLS 1.3 证书握手为主,负责身份验证和密钥保护。

1. 面试核心​

先记住这几条,再读正文
  • 证书认证。 证书关联身份与公钥,客户端验证信任链、有效期和主机名。
  • 密钥协商。 TLS 1.3 的证书握手用临时密钥交换派生流量密钥。卡 · 面试核心
  • 数据加密。 应用数据用对称 AEAD 加密并验证完整性。
  • 重放风险。 TLS 1.3 的 0-RTT 数据有重放风险,业务需约束重复效果。卡 · 前向保密与早期数据
  • 站点与协议选择。 SNI 指定目标服务器名称,ALPN 协商 h2 等应用协议。卡 · SNI 与 ALPN

2. 证书与握手​

典型 TLS 1.3 完整证书握手使用临时 (EC)DHE。双方过程如下:

  1. 客户端发送 ClientHello,提供算法和 key share。
  2. 服务端返回 ServerHello,选择算法并提供 key share。
  3. 双方根据密钥交换结果派生握手密钥。
  4. 服务端发送证书、CertificateVerify 和 Finished。
  5. 客户端验证证书与握手证明,再返回 Finished。

证书签名将身份与公钥联系起来。CertificateVerify 证明服务端持有证书对应私钥。Finished 校验握手上下文的完整性。

客户端检查信任链、有效期和目标名称。名称校验以证书 SAN 中的身份为依据。只检查证书由可信 CA 签发,仍缺少目标身份核对。

3. SNI 与 ALPN​

SNI 在 ClientHello 中携带目标服务器名称。共享 IP 的服务端据此选择证书和配置。ALPN 协商应用协议,例如 HTTP/2 的 h2。

两者发生在 HTTP 请求之前。HTTP Host 则属于应用层请求信息。普通 ClientHello 中的 SNI 可被链路观察者看到。

4. 记录加密与会话恢复​

握手后,双方使用流量密钥保护应用记录。TLS 1.3 使用 AEAD,兼顾加密与完整性验证。证书公钥负责身份验证,业务记录使用对称密码。

会话恢复使用已有会话派生的 PSK。恢复握手可减少认证成本。客户端和服务端仍需管理票据有效期与密钥轮换。

典型完整握手需要 1-RTT 后发送客户端应用数据。需要 HelloRetryRequest 时,会增加一次往返。这里的时间不含 TCP 建连。

5. 前向保密与早期数据​

临时 (EC)DHE 的共享秘密依赖本次临时私钥。服务端证书私钥事后泄露,也无法直接恢复过去的会话密钥。这种性质称为前向保密,前提是临时秘密已安全删除。

TLS 1.3 移除了静态 RSA 密钥传输。它的 PSK 恢复可结合 DHE,也可采用纯 PSK。纯 PSK 模式缺少临时 DHE 带来的前向保密。

0-RTT 允许客户端在恢复握手时发送早期数据。早期数据缺少前向保密,并存在跨连接重放风险。扣款等操作应禁用早期执行,或提供应用级防重放机制。服务端拒绝早期数据后,客户端还需决定是否重发。

6. 使用边界​

TLS 终止端能够读取明文。浏览器到网关、网关到后端是独立保护区段。每一段都要明确证书验证和加密配置。

TLS 认证通信端点。用户登录和资源权限由应用处理,见认证与授权。

7 · 面试题卡片​

本页题目与参考回答

7.1 HTTPS 中证书、密钥交换和对称加密分别负责什么?​

考察重点:证书身份验证、会话密钥派生与应用权限检查的边界。

相关内容:面试核心、证书与握手、使用边界。

参考回答

证书与握手签名用于验证服务器身份。

临时密钥交换让双方派生流量密钥。对称 AEAD 保护后续应用数据。客户端要核验信任链、有效期和主机名。业务权限仍由应用检查。

7.2 TLS 1.3 的前向保密与 0-RTT 重放风险是什么关系?​

考察重点:临时密钥、PSK 和早期数据边界。

相关内容:前向保密与早期数据。

参考回答

临时 DHE 保护过去会话免受证书私钥后续泄露影响。

0-RTT 早期密钥尚未加入本次 DHE 结果。早期数据缺少前向保密,也可被重放。因此写操作需要应用级防重放,或等待握手完成。

7.3 同一 IP 上的 HTTPS 服务怎样选择证书和 HTTP 版本?​

考察重点:SNI、ALPN 与 HTTP Host 的时机。

相关内容:SNI 与 ALPN。

参考回答

服务端根据 ClientHello 中的 SNI 选择目标站点配置和证书。

ALPN 协商 h2 等应用协议。HTTP Host 位于后续应用请求中。它的出现时间晚于 TLS 的证书选择。

8. 参考资料​