ocsp stapling 配置“写了却没生效”的根本原因是 nginx 运行时校验失败后静默跳过而非报错,需依次确认证书含 ocsp uri、resolver 显式配置且可达、ssl_trusted_certificate 链完整可信,并用 openssl s_client 验证响应状态。

OCSP Stapling 配置“写了却没生效”,是运维中高频但隐蔽的问题。它不报语法错误,nginx -t 仍显示 “syntax is ok”,reload 后也无明显异常,但浏览器实际收不到 OCSP 响应——根本原因是 Nginx 在运行时校验失败后会静默跳过,而非拒绝加载配置。
确认证书是否含有效 OCSP 地址
这是启动 OCSP Stapling 的硬性前提。没有 OCSP URI,Nginx 根本不会发起任何请求。
- 运行命令:openssl x509 -in /path/to/your.crt -text -noout | grep -A1 "OCSP"
- 输出中必须出现类似 OCSP - URI: http://ocsp.int-x3.letsencrypt.org 的行
- 若无输出,说明证书未嵌入 Authority Information Access(AIA)扩展,需联系 CA 重新签发或更换中间证书
检查 resolver 是否显式配置且真正可用
Nginx 不读 /etc/resolv.conf,也不走系统 DNS 缓存,必须手动指定、并验证可达性。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 配置中必须有:resolver 8.8.8.8 1.1.1.1 valid=300s; 和 resolver_timeout 5s;
- 手动测试 DNS 解析:dig @8.8.8.8 ocsp.int-x3.letsencrypt.org +short
- 若超时或无返回,说明 resolver 不通;可换用内网 DNS 或加 ipv6=on(如网络支持 IPv6)
验证证书链与 ssl_trusted_certificate 文件
OCSP 响应需由 CA 签名,Nginx 必须能用中间+根证书验证该签名,否则直接跳过 stapling,且无明确报错。
- ssl_certificate 文件应包含:域名证书 + 中间证书(顺序不能错)
- ssl_trusted_certificate 应单独提供完整信任链(中间在前、根在后),不含站点证书
- 校验命令:openssl ocsp -issuer intermediate.crt -cert example.com.crt -url http://ocsp.int-x3.letsencrypt.org -CAfile /etc/nginx/ssl/trusted-ocsp-ca.pem -text,成功标志是输出 Response verify OK
用 openssl s_client 主动验证是否真生效
别依赖日志或配置存在,要模拟真实 TLS 握手看结果。
- 执行:echo Q | openssl s_client -connect example.com:443 -status -servername example.com 2>/dev/null | grep -A5 "OCSP response"
- 关键看两处:OCSP Response Status: successful (0x0) 和 responder: 后是否为正确地址
- 若卡住数秒才返回、或提示 no response sent,说明配置未触发或运行时阻塞










