全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-20 7 分钟 ✍️ juanwangdev

SSL/TLS性能优化

SSL/TLS 握手涉及多次往返和计算密集的密钥交换。优化握手性能可显著降低延迟和 CPU 消耗。

会话复用

会话缓存

nginx
http {
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
}
  • shared:SSL:10m — 跨 worker 共享 10MB 会话缓存(约 40000 个会话)
  • ssl_session_timeout — 会话有效期,建议 10 分钟到 1 天

会话缓存可复用已建立的连接参数,跳过完整握手。10MB 共享缓存比 builtin 更高效。

会话票据 (TLS Session Tickets)

nginx
server {
    # NGINX 1.23.2+ 推荐关闭
    ssl_session_tickets off;
}

TLS Session Tickets 允许服务器在无状态情况下复用会话。但早期实现缺乏前向安全性,新版本建议关闭,使用 OCSP Stapling 替代。

OCSP Stapling

启用 OCSP 装订

nginx
server {
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
}
  • OCSP Stapling 由服务器预先获取证书状态并附加到握手
  • 避免客户端额外请求 CA 查询
  • 减少约 200-500ms 延迟

加密套件优化

优先选择 ECDHE

nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;

ECDHE 比 RSA 密钥交换快 3-10 倍,且提供前向安全。GCM 模式比 CBC 快且更安全。

TLS 1.3 简化套件

nginx
# TLS 1.3 的套件由协议自身管理,ssl_ciphers 不影响 1.3
ssl_protocols TLSv1.2 TLSv1.3;

TLS 1.3 移除了不安全的算法,握手仅需 1-RTT(0-RTT 需额外配置)。启用 1.3 是最有效的性能优化。

硬件加速

OpenSSL 引擎

Bash
# 查看 OpenSSL 支持的引擎
openssl engine -t

# NGINX 自动使用可用的 OpenSSL 引擎
# 如 AES-NI 指令集加速

现代 CPU 的 AES-NI 指令集可加速 AES 加密 3-10 倍。确保 BIOS 中启用 AES-NI 且 OpenSSL 版本支持。

0-RTT 早期数据

TLS 1.3 0-RTT

nginx
server {
    # 需要 NGINX 1.25.1+ 配合 OpenSSL 3.0+
    ssl_early_data on;
}

0-RTT 允许客户端在第一个握手消息中就携带数据。但有重放攻击风险,仅适用于幂等请求(GET/HEAD)。

证书链优化

减小证书体积

nginx
server {
    ssl_certificate /etc/nginx/ssl/fullchain.pem;  # 包含中间证书
    ssl_certificate_key /etc/nginx/ssl/server.key;
}
  • 使用 ECDSA 证书比 RSA 更小更快(256 位 ECDSA ≈ 3072 位 RSA 安全级别)
  • 中间证书放在同一文件减少一次传输
  • 使用短域名证书链(Let's Encrypt R3 → ISRG Root X1)

要点总结

  • 使用 shared 类型 ssl_session_cache 跨 worker 复用会话
  • OCSP Stapling 减少客户端证书验证延迟
  • 优先 ECDHE + GCM 加密套件,比 RSA 快 3-10 倍
  • 启用 TLS 1.3 获得最优握手性能
  • 利用 CPU AES-NI 指令集加速加密运算
  • 0-RTT 需权衡性能和安全(重放攻击风险)
  • ECDSA 证书比 RSA 更小更快

📝 发现内容有误?点击此处直接编辑

← 上一篇 nginx配置语法规则
下一篇 → gzip压缩优化
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库