TLS/SSL 基础回顾:握手协议、证书链与 PKI

在深入 Kong 网关的证书更新与性能优化之前,必须牢固掌握 TLS/SSL 的核心机制。本章将系统回顾 TLS 1.2 与 1.3 的握手流程差异、证书链的验证逻辑以及公钥基础设施(PKI)的信任模型。这些知识是后续配置证书、诊断握手失败和优化加密性能的理论基石。

2.1 TLS 握手协议:1.2 与 1.3 对比

TLS 握手是客户端与服务器之间建立加密会话的初始协商过程。TLS 1.3 相比 1.2 在安全性和性能上均有显著提升,尤其在减少往返次数(RTT)方面。

核心差异速览: TLS 1.2 需要 2-RTT 完成握手,而 TLS 1.3 仅需 1-RTT,且支持 0-RTT 快速恢复。

2.1.1 TLS 1.2 握手流程(2-RTT)

  1. ClientHello: 客户端发送支持的 TLS 版本、密码套件列表、随机数。
  2. ServerHello + 证书: 服务器选择密码套件、发送证书链和 ServerHelloDone。
  3. 客户端密钥交换: 客户端验证证书,发送 Pre-Master Secret(用服务器公钥加密),双方计算会话密钥。
  4. ChangeCipherSpec + Finished: 客户端通知启用加密,发送 Finished 消息。
  5. 服务器 Finished: 服务器确认握手完成,开始加密通信。

2.1.2 TLS 1.3 握手流程(1-RTT)

  1. ClientHello: 客户端直接发送支持的密码套件和 Key Share(DH 公钥参数)。
  2. ServerHello + 证书 + 完成: 服务器选择参数,返回证书和加密的 Finished 消息,握手立即完成。
  3. 客户端 Finished: 客户端验证证书并发送 Finished,开始加密通信。
性能提示: TLS 1.3 将密钥协商与证书验证并行化,减少了 1 个 RTT。对于高延迟网络(如跨国访问),延迟降低效果非常明显。
TLS 1.2 vs 1.3 握手流程对比 TLS 1.2 (2-RTT) 客户端 服务器 ① ClientHello ② ServerHello + 证书 ③ 密钥交换 (加密) ④ ChangeCipherSpec ⑤ 服务器 Finished 加密通信开始 TLS 1.3 (1-RTT) 客户端 服务器 ① ClientHello + Key Share ② ServerHello + 证书 + 完成 ③ 客户端 Finished 加密通信开始

2.2 证书链与验证机制

证书链(Certificate Chain)是 PKI 信任模型的核心实现。服务器发送的证书通常不是由根 CA 直接签发,而是由中间 CA 签发,形成一条从服务器证书到根证书的信任链。

2.2.1 证书链结构

层级 证书类型 签发者 作用
1 根证书 (Root CA) 自签名 信任锚点,预装在操作系统或浏览器中
2 中间证书 (Intermediate CA) 根 CA 签发最终实体证书,隔离根密钥风险
3 服务器证书 (Leaf/Server Cert) 中间 CA 绑定域名与公钥,用于实际通信
常见配置错误: 在 Kong 或 Nginx 中仅配置服务器证书而未包含中间证书链,会导致部分客户端(如移动设备)因无法构建完整信任链而拒绝连接。

2.2.2 证书验证过程

  1. 构建链: 客户端从服务器证书开始,逐级向上查找签发者,直到找到本地信任的根证书。
  2. 签名验证: 使用父证书的公钥验证子证书的数字签名,确保证书未被篡改。
  3. 有效期检查: 验证每个证书的生效日期和到期日期。
  4. 吊销检查: 通过 CRL 或 OCSP 检查证书是否已被吊销。
  5. 域名匹配: 验证服务器证书的 Subject Alternative Names (SAN) 是否匹配访问的域名。
证书链信任模型与验证流程 根 CA 证书 信任锚点 (自签名) 中间 CA 证书 由根 CA 签发 服务器证书 由中间 CA 签发 验证流程 1. 从服务器证书开始 2. 逐级验证签名 3. 检查有效期 4. 检查吊销状态 5. 匹配域名 (SAN) 6. 到达信任锚点

2.3 公钥基础设施(PKI)

PKI 是支撑 TLS 安全通信的完整体系,包含证书颁发机构(CA)、注册机构(RA)、证书吊销列表(CRL)和在线证书状态协议(OCSP)等组件。

2.3.1 PKI 核心组件

组件 职责 在 Kong 场景中的关联
CA (证书颁发机构) 签发、吊销证书 选择受信任的 CA 购买或签发证书
RA (注册机构) 验证申请者身份 证书申请时的域名验证流程
CRL (证书吊销列表) 发布已吊销证书序列号 Kong 可配置 CRL 检查策略
OCSP (在线证书状态协议) 实时查询证书状态 OCSP Stapling 可提升握手性能
HSM (硬件安全模块) 安全存储私钥 企业级 Kong 部署可集成 HSM

2.3.2 密钥对与证书生命周期

  • 密钥对生成: 服务器生成 RSA(2048/4096 位)或 ECDSA(P-256/P-384)密钥对。
  • CSR 提交: 将公钥和域名信息封装为证书签名请求(CSR)提交给 CA。
  • 证书签发: CA 验证身份后,使用其私钥签发证书。
  • 证书部署: 将证书和私钥配置到 Kong 网关。
  • 证书更新: 在到期前重新生成密钥对并替换旧证书。
  • 证书吊销: 私钥泄露或域名变更时立即吊销。
Kong 运维要点: 证书更新窗口期应至少提前 30 天。使用 ECDSA 证书可减少握手计算开销,配合 TLS 1.3 可获得最佳性能。

2.4 密码套件与算法选择

密码套件定义了握手过程中使用的密钥交换、身份验证、加密和消息认证码(MAC)算法组合。TLS 1.3 简化了密码套件结构,移除了不安全算法。

协议版本 推荐密码套件 密钥交换 性能特征
TLS 1.2 ECDHE-RSA-AES128-GCM-SHA256 ECDHE + RSA 前向安全,兼容性好
TLS 1.3 TLS_AES_128_GCM_SHA256 ECDHE (隐式) 更少 RTT,更优性能
TLS 1.3 TLS_CHACHA20_POLY1305_SHA256 ECDHE (隐式) 移动端性能更佳
优化建议: 在 Kong 中优先启用 TLS 1.3 并配置 ssl_ciphers 仅包含 AEAD 套件。对于高并发场景,ECDHE 密钥交换的计算开销低于传统 RSA 密钥交换。

2.5 本章小结

  • TLS 1.3 通过 1-RTT 握手和 0-RTT 恢复显著降低延迟,是 Kong 网关的首选协议。
  • 证书链必须完整配置,包含服务器证书和所有中间证书,否则客户端验证会失败。
  • PKI 信任模型依赖根证书作为锚点,运维中需关注证书有效期和吊销状态。
  • 密码套件选择应优先考虑前向安全(ECDHE)和 AEAD 加密模式。