Nginx 通过完整证书链(fullchain.pem)、OCSP Stapling、共享会话缓存、TLS 1.3 及精简密码套件协同优化,可显著减少握手往返、避免额外查询、提升复用率,降低首屏延迟。

优化前端页面加载时的 SSL 证书链传输,核心是减少 TLS 握手阶段的往返延迟、避免证书链不完整导致的额外请求,并提升浏览器复用会话的能力。关键不在“前端代码”,而在于 Nginx 如何把证书链高效、正确地发给浏览器。
确保证书链完整且顺序正确
浏览器验证服务器身份时,需要从服务器证书逐级向上验证到受信任的根 CA。如果 Nginx 只发送了服务器证书(.crt),没附带中间证书,浏览器就得自己去下载中间 CA,引发额外 DNS 查询和 HTTP 请求,明显拖慢首屏时间。
- 把服务器证书和所有中间证书合并成一个文件(推荐命名为 fullchain.pem),顺序必须是:服务器证书在最前,中间证书依次追加,根证书不要包含(浏览器已内置)
- Nginx 配置中使用 ssl_certificate 指向这个 fullchain.pem,而不是原始的 server.crt
- 用命令验证是否完整:openssl verify -CAfile /etc/ssl/certs/ca-bundle.crt fullchain.pem,返回 OK 即可
启用 OCSP Stapling 加速证书状态检查
浏览器默认会通过 OCSP 或 CRL 检查证书是否被吊销,这需要额外发起网络请求。OCSP Stapling 让 Nginx 主动向 CA 获取签名响应并缓存在本地,在 TLS 握手中一并返回,省去客户端直连 CA 的开销。
- 在 server 块中添加:ssl_stapling on; 和 ssl_stapling_verify on;
- 指定可信 CA 证书路径:ssl_trusted_certificate /path/to/fullchain.pem;(必须含中间证书)
- 确保系统时间准确,否则 OCSP 响应会被视为无效
合理配置会话缓存与票据机制
首次 TLS 握手耗时高,后续连接若能复用会话密钥,就能跳过密钥交换环节(TLS 1.2 的简短握手,或 TLS 1.3 的 0-RTT)。Nginx 需提供稳定、高效的复用支持。
- 启用共享内存会话缓存:ssl_session_cache shared:SSL:10m;(10MB 可缓存约 4 万个会话)
- 设置合理超时:ssl_session_timeout 4h;(太短增加重握手,太长占用内存)
- TLS 1.3 环境下建议开启会话票据:ssl_session_tickets on;,并定期轮换密钥文件(ssl_session_ticket_key)
优先协商 TLS 1.3 并精简密码套件
TLS 1.3 握手只需一次往返(1-RTT),且移除了不安全算法,显著降低延迟并提升安全性。配合高效密码套件,能进一步压缩加密计算开销。
- 明确只启用现代协议:ssl_protocols TLSv1.2 TLSv1.3;(禁用 TLS 1.0/1.1)
- 选择前向保密强、性能好的套件,例如:ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
- 设为服务端优先:ssl_prefer_server_ciphers on;,确保协商结果可控
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











