最可靠验证方式是用openssl s_client -connect example.com:443 -servername example.com -status -tlsextdebug检查输出是否含“ocsp response: successful (0x0) certstatus: good”,缺-status或-tlsextdebug均无法准确捕获装订响应。

直接用 openssl s_client 连接并检查输出中是否含有效 OCSP 响应,是最可靠、最常用的验证方式。它不依赖浏览器或第三方工具,能准确反映 Nginx 是否真正在 TLS 握手时“装订”了 OCSP 数据。
核心命令与关键输出判断
在终端执行以下命令(将 example.com 替换为你的域名):
openssl s_client -connect example.com:443 -servername example.com -status -tlsextdebug &1 | grep -i "ocsp response"
成功启用 Stapling 时,应看到类似这样的输出:
- OCSP response: successful (0x0)
- CertStatus: good(或 revoked/unknown,取决于证书状态)
如果只看到 OCSP response: no resp 或完全没出现 OCSP response 字样,说明 Stapling 未生效。
为什么必须加 -status 和 -tlsextdebug
这两个参数缺一不可:
-
-status:明确告诉 OpenSSL 主动请求并接收 OCSP 装订数据(即发送 status_request 扩展) -
-tlsextdebug:确保 TLS 扩展交互过程被记录,否则部分响应可能被静默忽略 - 漏掉任一参数,即使 Nginx 已配置正确,也可能无法触发或捕获装订响应
辅助确认项(当主命令结果模糊时)
若输出不清晰,可去掉 grep 直接看完整响应:
openssl s_client -connect example.com:443 -servername example.com -status &1
然后手动查找以下三处:
- 开头是否有
OCSP Response Data:区块 - 区块内是否有
Response Type: Basic OCSP Response - 末尾是否有
CertStatus: good及对应时间戳(thisUpdate/nextUpdate)
常见失败信号及对应方向
遇到无效响应时,可快速定位问题类型:
-
OCSP response: no response sent→ Nginx 未启用 stapling,或配置未加载(检查nginx -t && systemctl reload nginx) -
verify error:num=13:invalid certificate verification→ssl_trusted_certificate路径错误或内容不全(需含中间+根证书) -
OCSP verify error: unable to get local issuer certificate→ 证书链不完整,ssl_certificate缺少中间证书 - 无任何 OCSP 相关输出 → DNS 解析失败(检查
resolver配置)、系统时间偏差超 ±5 分钟、或证书本身不含 OCSP URI











