最准确可靠的测试方式是用openssl s_client模拟真实客户端行为:执行openssl s_client -connect example.com:443 -servername example.com -status -tlsextdebug,若输出含“OCSP Response Status: successful (0x0)”即成功;若为“no response sent”或无OCSP字段,则配置失败或静默失效。

直接用 openssl s_client 模拟真实客户端行为,是最准确、最可靠的测试方式。它能明确告诉你服务器是否真的返回了 OCSP 响应,而不是只看配置有没有写对。
核心命令:检查 OCSP 响应状态
在 Nginx 服务器或任意能访问该域名的 Linux 终端执行:
openssl s_client -connect example.com:443 -servername example.com -status -tlsextdebug 2>&1 | grep -A 5 "OCSP response"
重点看输出中是否出现:
- OCSP Response Status: successful (0x0) → 表示 Stapling 已成功装订并返回
- OCSP response: no response sent → 表示未启用、配置失败,或静默失效
- 完全没出现任何 OCSP 字段 → 客户端未发 status_request 扩展(可能证书无 OCSP URI,或浏览器/工具不支持)
注意:-status 参数必须加,否则不会触发 OCSP 查询;-tlsextdebug 可辅助确认 TLS 扩展是否正常交互。
辅助验证:确认证书本身支持 OCSP
先确保你的证书里真有 OCSP 地址:
openssl x509 -in /etc/nginx/ssl/your_domain.crt -text -noout | grep -A1 "OCSP"
输出应类似:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
OCSP - URI: http://ocsp.int-x3.letsencrypt.org
若无此行,说明证书未嵌入 AIA 扩展,Nginx 根本不会尝试获取 OCSP 响应。
快速排除网络与解析问题
如果 openssl 命令卡住几秒才返回失败,很可能是 resolver 不通或超时:
- 检查 Nginx 配置中是否写了 resolver(如
resolver 8.8.8.8 1.1.1.1 valid=300s;)和 resolver_timeout 5s; - 手动测试 DNS 是否能解析 OCSP 地址:dig +short ocsp.int-x3.letsencrypt.org @8.8.8.8
- 再测 OCSP 服务是否可达:curl -I -m 5 http://ocsp.int-x3.letsencrypt.org,返回码必须是 200
日志里看运行时状态(需 Nginx ≥1.11.0)
在 log_format 中加入变量,可记录每次请求的实际 stapling 行为:
log_format ocsp '$remote_addr "$request" ocsp_url="$ssl_stapling_responder" verify=$ssl_stapling_verify';
然后查 access 日志,典型有效响应表现为:
- ocsp_url="http://ocsp.int-x3.letsencrypt.org" verify=1
- ocsp_url="" verify=0 或 verify=-1 表示验证失败或未触发










