2. TLS/SSL 基础回顾:TLS握手协议、证书链验证、证书格式(PEM/DER/PKCS12)
在云原生网关的证书更新回归检查中,TLS/SSL 是保障传输安全的核心协议。本节从握手协议、证书链验证机制和常见证书格式三个维度进行回顾,为后续诊断延迟问题奠定基础。
2.1 TLS 握手协议
TLS 握手是客户端与服务器之间建立加密会话的过程,决定了后续数据传输的机密性与完整性。在 API 网关场景中,握手延迟直接影响首包响应时间。
关键阶段:ClientHello → ServerHello → 证书交换 → 密钥协商 → Finished
延迟关注点:握手阶段中的证书传输(步骤②)和证书链验证(步骤③)是证书更新后最容易引入额外延迟的环节,尤其是中间证书缺失或 OCSP 响应超时。
2.2 证书链验证
证书链验证是 TLS 握手过程中客户端确认服务器身份的关键步骤。验证过程从叶子证书开始,逐级向上追溯至受信任的根证书。
| 验证层级 | 验证内容 | 常见失败原因 |
|---|---|---|
| 叶子证书 | 域名匹配、有效期、密钥用法 | SAN 不匹配、证书已过期 |
| 中间证书 | 签发者匹配、签名有效性、CA 标志 | 中间证书缺失、链不完整 |
| 根证书 | 是否在受信任存储中、自签名验证 | 根证书未安装、信任锚过期 |
| CRL/OCSP | 证书吊销状态 | OCSP 响应器不可达、吊销列表过期 |
证书更新回归检查要点:在发布窗口内更新证书后,必须验证新证书链的完整性。常见问题包括:新证书未包含完整的中间证书链、OCSP stapling 未正确配置、证书与私钥不匹配。
2.3 证书格式(PEM / DER / PKCS12)
云原生网关环境中,证书以不同格式存储和传输。理解这些格式的差异有助于正确配置证书更新流程。
| 格式 | 编码方式 | 内容结构 | 典型用途 |
|---|---|---|---|
| PEM | Base64 文本 | -----BEGIN CERTIFICATE----- 头尾标记 |
Nginx/Envoy 证书配置、Kubernetes Secret |
| DER | 二进制 | ASN.1 编码的原始字节 | Java 密钥库、Windows 证书导入 |
| PKCS12 | 二进制(加密容器) | 包含证书链 + 私钥,受密码保护 | 网关双向 TLS、证书迁移 |
格式转换命令(OpenSSL):
# PEM → DER
openssl x509 -in cert.pem -outform DER -out cert.der
# PEM → PKCS12(包含私钥)
openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.p12
# PKCS12 → PEM(提取证书和私钥)
openssl pkcs12 -in cert.p12 -nodes -out cert.pem
云原生网关最佳实践:推荐使用 PEM 格式存储证书,因为 Kubernetes Secret 原生支持 PEM 格式,且 Envoy/Nginx 等网关代理可直接读取。PKCS12 适用于需要同时分发证书和私钥的场景,但需注意密码管理。