ocsp stapling 需同时满足五项前提(nginx≥1.3.7、openssl≥1.0.1、证书含ocsp uri、系统时间误差≤±5分钟、证书链完整)并配置四条指令(ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver),缺一不可,否则静默失效,可减少首次https握手150–300ms延迟。

直接开启 ssl_stapling on 不会生效,OCSP Stapling 是一套必须全部满足才能运转的机制。配置完整时,HTTPS 首次握手可减少 150–300ms 延迟,尤其对移动端和高延迟网络效果明显。
确认五项基础前提是否全部满足
任一缺失,Nginx 会静默关闭 stapling,且不报错、无日志警告:
- Nginx 版本 ≥ 1.3.7(生产环境建议 ≥ 1.11.0,错误处理更稳定)
- OpenSSL 版本 ≥ 1.0.1(推荐 1.1.1 或更新版,如 OpenSSL 3.0)
- 证书含 authorityInfoAccess 扩展(即内嵌 OCSP 响应器地址),可用命令验证:
openssl x509 -in your.crt -text -noout | grep -A1 "OCSP" - 服务器系统时间误差 ≤ ±5 分钟(OCSP 响应含严格有效期,偏差大会被拒绝)
- 证书链完整:要么
ssl_certificate指向含域名证书 + 中间证书的 PEM(如 Let’s Encrypt 的fullchain.pem),要么用ssl_trusted_certificate单独指定可信链
四条核心配置必须同时写在 server 块中
仅加 ssl_stapling on 是常见误区。以下四项缺一不可,路径和位置都需准确:
-
ssl_stapling on;—— 显式启用功能(默认关闭) -
ssl_stapling_verify on;—— 强制校验 OCSP 响应签名、颁发者及有效期,防止缓存伪造 -
ssl_trusted_certificate /path/to/ca-bundle.pem;—— 指向中间 CA + 根 CA 的 PEM 文件(不含域名证书),顺序必须是中间证书在前、根证书在后 -
resolver 8.8.8.8 1.1.1.1 223.5.5.5 valid=300s;—— 必须显式配置 DNS 解析器(Nginx 不读/etc/resolv.conf),多个 DNS 提升容错性
建议追加:resolver_timeout 5s;,避免 DNS 查询卡住整个 TLS 握手。
避开 DNS 和证书链两个高发陷阱
这两个环节最容易导致 stapling 静默失效,且排查困难:
- 未配
resolver:日志仅提示 no resolver defined to resolve OCSP responder hostname,然后自动禁用 stapling -
ssl_trusted_certificate文件若缺失中间证书、顺序颠倒、或误用了ssl_certificate文件(含域名证书),会导致ssl_stapling_verify on校验失败 - 若服务器只支持 IPv6,需额外加上
resolver ipv6=on; -
valid=300s是较稳妥的缓存时间;设太短(如 60s)会频繁解析,设太长(如 86400s)无法响应 OCSP 域名变更
验证是否真正生效
配置完成后 reload Nginx,用以下命令检查 OCSP 响应状态:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status -tlsextdebug &1 | grep -i "OCSP response"
看到 OCSP Response Status: successful (0x0) 才表示 stapling 已成功启用。











