ocsp stapling 需同时满足版本、证书、网络、时间、证书链五大前提及四条核心配置,缺一不可;否则静默失效。验证需用 openssl s_client 或 ssl labs 确认“ocsp response status: successful”。

OCSP Stapling 不是加几行配置就能跑通的功能,它是一套服务端主动获取、签名验证、缓存分发的协同机制。只写 ssl_stapling on,客户端依然得自己连 CA 查吊销状态——延迟没减,隐私也没保。
确认硬性前提是否全部满足
缺一不可,否则配置再全也静默失效:
- Nginx 版本 ≥ 1.3.7,生产环境强烈建议 ≥ 1.11.0(旧版本对 OCSP 错误响应处理不稳定,容易不报错也不工作);
- OpenSSL ≥ 1.0.1,推荐 1.1.1 或更新版;
- 证书必须含
authorityInfoAccess扩展(即提供 OCSP 响应器地址),可用命令验证:openssl x509 -in your.crt -text -noout | grep -A1 "OCSP"; - 服务器能直连 OCSP URL(如
http://ocsp.int-x3.letsencrypt.org),用以下命令手动测试:openssl ocsp -url [URL] -cert your.crt -CAfile chain.pem -text,输出需含responseStatus: successful; - 系统时间误差 ≤ 5 分钟(OCSP 响应含严格有效期,偏差过大直接被拒绝);
- 证书链完整:Nginx 的
ssl_certificate必须是域名证书 + 中间证书合并的 PEM 文件(例如 Let’s Encrypt 的fullchain.pem)。
四条核心配置必须同时存在
少一条,stapling 就不会出现在 TLS 握手里:
-
ssl_stapling on;—— 启用功能,让 Nginx 主动发起 OCSP 请求; -
ssl_stapling_verify on;—— 强制校验 OCSP 响应签名、颁发者和时间有效性,防止缓存污染或伪造; -
ssl_trusted_certificate /path/to/ca-bundle.pem;—— 这不是ssl_certificate,而是专用于验证 OCSP 响应签名的“信任链”,必须包含签发 OCSP 响应器的中间 CA 和根 CA(顺序:中间在前,根在后); -
resolver 8.8.8.8 1.1.1.1 223.5.5.5 valid=300s;—— 显式指定 DNS 解析器,Nginx 不读/etc/resolv.conf;多个 DNS 提升容错性,valid=300s避免频繁重查或缓存过期。
推荐追加:resolver_timeout 5s;,防止 DNS 卡住 TLS 握手。
DNS 配置最容易踩坑的细节
resolver 不是可选项,而是关键依赖:
- 不配
resolver,Nginx 日志只会提示no resolver defined to resolve OCSP responder hostname,然后静默关闭 stapling,毫无预警; - 若服务器仅支持 IPv6,必须加上
resolver ipv6=on;; - 只填一个 DNS(如仅
8.8.8.8)风险高——该 DNS 若临时屏蔽 OCSP 域名或不可达,stapling 立即失效; -
valid时间不宜过短(如 60s):频繁 DNS 查询可能拖慢 OCSP 获取;也不宜过长(如 86400s):无法及时响应 DNS 变更或故障切换。
验证是否真正生效
重启 Nginx 后,用 OpenSSL 实测最可靠:
openssl s_client -connect example.com:443 -status -servername example.com 2>&1 | grep -A17 "OCSP response"
成功时输出中应含:
OCSP Response Status: successful (0x0)-
Response verify OK(前提是ssl_stapling_verify on且ssl_trusted_certificate正确)
也可用 SSL Labs 测试工具,结果页 “Certificate” 栏会明确标注 OCSP stapling: Yes。











