nginx ocsp stapling 是否生效需通过四步交叉验证:1. openssl s_client检查服务端是否返回ocsp响应;2. 查nginx error.log中ocsp相关错误;3. 浏览器开发者工具确认无外部ocsp请求;4. wireshark抓包验证serverhello中含有效certificatestatus扩展。

要确认 Nginx 的 OCSP Stapling 是否真正启用并生效,不能只看配置是否写上 ssl_stapling on,必须从服务端输出、客户端行为和网络层三方面交叉验证。以下四步是实际运维中最可靠、最常用的测试方法。
用 openssl s_client 直接检查服务端响应
这是最快速、无需浏览器介入的终端验证方式,能直接看到 Nginx 是否在 TLS 握手时返回了 OCSP 数据:
- 执行命令:
openssl s_client -connect example.com:443 -status -servername example.com 2>&1 | grep -A 2 "OCSP response" - 成功时会显示类似:
OCSP response: successful (0x0)CertStatus: good - 若只看到
OCSP response: no response sent或完全无输出,说明 stapling 未触发或被静默禁用
查 Nginx 错误日志定位常见失败原因
Nginx 不报错不等于正常工作,很多 stapling 失效问题会在 error.log 中留下关键线索:
- 搜索关键词:
ocsp、no resolver defined、verify failed、timeout、resolving OCSP responder - 典型问题包括:
–no resolver defined:漏配resolver指令
–verify failed:证书链不完整或ssl_trusted_certificate内容错误(混入了站点证书)
–response timed out:OCSP 响应器不可达或 DNS 解析慢
用浏览器开发者工具筛查外部 OCSP 请求
如果浏览器仍在自行访问 CA 的 OCSP 地址,就说明服务器没提供装订响应,客户端被迫“补救”:
- 打开 Chrome/Edge → F12 → Network 标签页
- 过滤输入:
ocsp或status - 刷新 HTTPS 页面,观察是否有类似
ocsp.digicert.com、ocsp.sectigo.com的请求 - 若出现且状态为 200(返回
application/ocsp-response),说明 stapling 未生效;若无任何 OCSP 请求,大概率已成功装订
用 Wireshark 抓包确认 ServerHello 中含 OCSP 数据
这是技术上最权威的判断依据,能穿透缓存和代理,直击 TLS 握手本质:
- 启动 Wireshark,捕获目标 HTTPS 流量
- 过滤表达式:
tls.handshake.type == 2 && tls.handshake.extensions.status_request == 1 - 找到 ServerHello 包 → 展开 Extensions → status_request → CertificateStatus → response
- 若
response字段存在且长度明显大于 100 字节(如 800+),说明 OCSP 响应已成功装订;若该字段缺失或为空,则服务端未交付
不复杂但容易忽略:四步中任意一步失败,都意味着 stapling 实际未起作用。重点不是“配了没”,而是“客户端收到了没”。











