开启ssl_stapling可减少150–300ms tls握手延迟,需满足nginx≥1.3.7、openssl≥1.0.1、证书含authorityinfoaccess扩展、时间准确、证书链完整,并配置ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver及resolver_timeout。

直接在 Nginx 负载均衡器或反向代理层开启 ssl_stapling,能让服务器主动获取并缓存证书吊销状态(OCSP 响应),在 TLS 握手时一并“装订”发给客户端,省去浏览器自己查 OCSP 的一次网络往返。实测可减少 150–300ms 握手延迟,首屏加载平均缩短约 41%。
确认基础条件是否全部满足
OCSP Stapling 不是配置即生效的功能,缺任一前提都会静默失效:
- Nginx 版本 ≥ 1.3.7(生产环境建议 ≥ 1.11.0 或最新稳定版)
- OpenSSL ≥ 1.0.1(推荐 1.1.1 或更新版本)
- 证书中必须含 Authority Information Access 扩展,内嵌 OCSP 响应器地址;可用命令验证:
openssl x509 -in your.crt -text -noout | grep -A1 "OCSP" - 服务器系统时间误差控制在 ±5 分钟内(OCSP 响应含严格有效期校验)
- 证书链完整:确保
ssl_certificate是域名证书 + 中间证书合并的 PEM 文件(如 Let’s Encrypt 的fullchain.pem)
核心配置项必须四条齐备
仅写 ssl_stapling on 是无效的。以下指令需同时出现在 HTTPS 的 server 块中:
-
ssl_stapling on;—— 显式启用装订功能 -
ssl_stapling_verify on;—— 强制校验 OCSP 响应签名、颁发者和有效期,防伪造与过期 -
ssl_trusted_certificate /path/to/ca-bundle.pem;—— 指向中间 CA + 根 CA 的完整信任链(不是你的站点证书),用于验证 OCSP 响应本身是否可信;Let’s Encrypt 用户通常用chain.pem或fullchain.pem -
resolver 8.8.8.8 1.1.1.1 223.5.5.5 valid=300s;—— 必须显式指定 DNS 解析器(Nginx 不读/etc/resolv.conf);多个 DNS 提升容错性;valid=300s防止 DNS 缓存过期导致 stapling 中断
建议追加:resolver_timeout 5s;,避免 DNS 查询卡住整个 TLS 握手。
私有 CA 或内网环境的替代方案
若使用企业自签证书或内网 CA,Nginx 默认无法访问其 OCSP 响应器,标准 stapling 会失败:
- 手动调用
openssl ocsp工具生成响应,例如:
openssl ocsp -issuer chain.pem -cert fullchain.pem -url http://ocsp.your-ca.local -text -out /etc/nginx/ocsp-response.der - 在
server块中启用:ssl_stapling_file /etc/nginx/ocsp-response.der; - 仍需保留
ssl_stapling_verify on和正确的ssl_trusted_certificate,确保响应真实有效
验证是否真正生效
别只看配置无报错,要实测响应内容:
- 执行命令:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status -tlsextdebug &1 | grep -i "OCSP response" - 看到 OCSP Response Status: successful (0x0) 即表示已成功启用
- 若返回 no OCSP response sent by server 或日志中出现 no resolver defined,说明某项配置缺失或路径错误











