OCSP装订需同时满足四项基础条件和四条核心配置:Nginx≥1.3.7、OpenSSL≥1.0.1、证书含有效OCSP URI、系统时间误差≤±5分钟;且必须配置ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver,缺一不可。

直接在 Nginx 的 HTTPS server 块中配置 ssl_stapling on 并不能让 OCSP 装订真正工作——它只是开关,背后需要一整套协同机制。Nginx 必须能主动访问 OCSP 响应器、验证响应真实性、缓存结果,并在 TLS 握手时“装订”发出。否则浏览器仍要自己查,延迟照旧。
确认证书和运行环境是否达标
四项基础条件缺一不可,任一不满足都会静默失效(你不会收到错误提示):
- Nginx ≥ 1.3.7,生产环境建议用 1.11.0 或更高版本;低版本对 OCSP 错误响应处理不稳定
- OpenSSL ≥ 1.0.1,推荐 1.1.1+,支持 SHA-2 签名校验
-
证书含有效 OCSP URI:运行
openssl x509 -in your.crt -text -noout | grep -A1 "OCSP",输出中必须有类似OCSP - URI:http://ocsp.int-x3.letsencrypt.org - 系统时间误差 ≤ ±5 分钟:OCSP 响应含严格有效期,偏差过大会导致校验失败
四条核心配置必须同时写在 server 块内
只写 ssl_stapling on 是常见误区。以下四行需全部存在、路径准确、顺序无关,但缺一不可:
-
ssl_stapling on;—— 启用预装订功能 -
ssl_stapling_verify on;—— 强制校验 OCSP 响应签名、颁发者和时间有效性,防伪造或过期 -
ssl_trusted_certificate /path/to/full-chain-trusted.pem;—— 专用于验证 OCSP 响应的 PEM 文件,内容为:中间证书在前 + 根证书在后(不能复用ssl_certificate,也不能含域名证书) -
resolver 8.8.8.8 1.1.1.1 223.5.5.5 valid=300s;—— 显式指定 DNS 解析器(Nginx 不读/etc/resolv.conf),valid=300s防止 DNS 缓存过期中断 stapling
建议追加:resolver_timeout 5s;,避免一次 DNS 查询卡住整个 TLS 握手。
特别注意 ssl\_trusted\_certificate 的生成与验证
这个文件是成败关键,不能靠猜测:
- Let’s Encrypt 用户可用
chain.pem或fullchain.pem(确保不含私钥且顺序正确) - 自建 CA 或企业证书需手动拼接:先获取签发你域名证书的中间 CA,再获取其根证书,执行
cat intermediate.crt root.crt > full-chain-trusted.pem - 验证是否有效:运行
openssl ocsp -issuer intermediate.crt -cert your.crt -url http://ocsp.example.com -CAfile full-chain-trusted.pem -text,看到response is good才算通过
验证是否真正生效
配置完成后别只看 Nginx 是否启动成功,要实测:
- 命令行测试:
openssl s_client -connect example.com:443 -status -servername example.com 2>&1 | grep -i "ocsp response",若返回非空且含OCSP Response Status: successful即表示正常 - 在线工具验证:用 SSL Labs(ssllabs.com)扫描域名,结果页中 “OCSP stapling” 显示为 Yes
- 浏览器开发者工具 → Security 标签页,点击 “View certificate”,查看是否有 “OCSP Response” 字段并显示有效时间


















