首页/安全/加密与证书速查/OCSP Stapling 不生效排查

OCSP Stapling 不生效排查

配置装订后用 s_client -status 验证是否真的返回装订响应;不生效的常见原因是缺少 resolver、缺少 ssl_trusted_certificate,或服务器访问不到 OCSP 端点。

加密与证书速查安全更新于 2026-10-13

OCSP Stapling 不生效排查

OCSP 装订由服务端在握手时附带吊销状态响应,客户端无需再单独查询响应者,既省时又减少隐私泄露。配置之后必须验证是否真的生效:用 s_client -status 查看握手响应里是否包含 OCSP Response 区段。不生效常见于三个原因——缺少 resolver、缺少 ssl_trusted_certificate,或者服务器访问不到 OCSP 端点。

基本信息

验证命令s_client -status 查看 OCSP Response 区段
必要配置ssl_stapling on、ssl_stapling_verify on 与 ssl_trusted_certificate
网络前提解析器可达且能解析 OCSP 域名
证书前提签发该证书的 CA 必须提供 OCSP 端点
缓存行为服务端会缓存响应并在后台刷新

典型使用场景

  • 启用装订后验证是否真的生效
  • 排查「配置了却没有装订响应」
  • 评估外部解析器不可达带来的影响
  • 与直接查询 OCSP 对比,选择更适合的吊销检查方式
  • 把装订验证纳入上线检查清单

验证与服务端配置

验证与服务端配置
echo | openssl s_client -connect example.com:443 -servername example.com -status 2>/dev/null | grep -A3 -i 'OCSP response'
nginx -T | grep -nE 'ssl_stapling|ssl_trusted_certificate|resolver'
# 确认证书里是否声明了 OCSP 端点
openssl x509 -in cert.pem -noout -text | grep -A2 'OCSP'

nginx 参考配置

nginx 参考配置
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
resolver 223.5.5.5 1.1.1.1 valid=300s;
resolver_timeout 5s;

不生效原因

原因表现处理
缺少 resolver响应始终为空配置可达的 DNS 解析器
缺少信任文件无法验证响应签名配置 ssl_trusted_certificate
端点不可达日志中有获取失败记录检查出口策略与 DNS
CA 无 OCSP 端点永远不会出现响应改用 CRL 或其他吊销方案
resolver 需要选择本机实际可达的解析服务,使用不可达或被劫持的 DNS 会让装订长期失败;如果签发该证书的 CA 根本不提供 OCSP 端点,那么无论怎样配置都不会生效。
验证要点:装订失败通常不会影响业务可用性,因此问题容易被长期忽略。把「握手响应中是否包含装订内容」做成例行巡检项,比依赖故障暴露更可靠;同时记录服务端日志中的获取失败信息,能帮助区分是网络问题还是配置问题。
补充:装订响应由服务端缓存并在后台更新,首次启动后的短时间内可能拿不到响应,属于正常现象。排查时先多请求几次或稍等片刻再判断,可以少走不少弯路。

易错点

  • 忘记配置 resolver → 装订长期失败,而配置表面上看不出问题
  • 使用不可达或不可信的 DNS 作为 resolver → 装订失败或响应来源不可信
  • 未配置 ssl_trusted_certificate → 无法验证响应签名
  • 只配置不验证 → 以为已生效,实际握手响应里没有装订内容

数据来源与参考

  • nginx 官方文档(ssl_stapling / resolver)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌