排查nginx ocsp查询失败,核心是确认出站http请求是否被阻断:需检查系统防火墙(如firewalld/ufw)出站规则、云平台安全组出方向策略、dns解析能力及目标ocsp服务器(如ocsp.int-x3.letsencrypt.org:80)连通性,日志中出现“connection refused”或超时才指向网络拦截。

排查Nginx因防火墙拦截导致无法向CA服务器发起OCSP查询,核心是确认“出站HTTP请求是否被阻断”。这和拦截客户端访问Nginx的防火墙(入站)完全不同——OCSP查询是Nginx主动向外发请求,属于服务器的**出站流量**,需检查系统级防火墙规则、网络策略及DNS解析能力。
确认OCSP查询是否真的失败
先看Nginx错误日志有没有明确线索:
- 如果日志中反复出现 “ssl_stapling ignored, issuer certificate not found” 或 “no OCSP responder URLs in certificate”,说明证书本身不合规或缺失AIA扩展,不是防火墙问题
- 若日志里有类似 “connect() failed (111: Connection refused) while connecting to OCSP responder” 或超时提示(如 “connection timed out”),才指向网络连通性异常
- 注意:Nginx不会为OCSP失败单独报错,很多情况下只是静默跳过stapling,此时需用
openssl s_client验证是否真有OCSP响应返回
检查系统防火墙是否放行出站HTTP请求
OCSP协议使用HTTP(非HTTPS),目标端口是80,域名如 ocsp.int-x3.letsencrypt.org。系统防火墙(如firewalld或iptables)默认可能只放行入站,忽略出站限制:
- CentOS/RHEL系(firewalld):
sudo firewall-cmd --list-all查看是否禁用了output链或设置了rich rules限制外连 - Ubuntu/Debian(ufw):
sudo ufw status verbose看Outgoing策略是否为allow;若为deny,需显式放行:sudo ufw allow out 80/tcp - 阿里云/腾讯云ECS还需检查安全组:确保“出方向”规则允许目标IP段(如Let’s Encrypt OCSP服务器IP)的80端口
验证DNS解析与目标地址可达性
resolver配置再正确,若DNS查不到OCSP域名,或防火墙拦截了DNS查询,也会失败:
- 用Nginx配置中的resolver测试:
dig @8.8.8.8 ocsp.int-x3.letsencrypt.org +short,确认能返回IP - 直接curl模拟OCSP请求:
curl -v http://ocsp.int-x3.letsencrypt.org/,观察是否返回HTTP 200或400(400表示服务可通,只是请求格式不对);若超时或Connection refused,基本确定是防火墙或网络策略拦截 - 注意:某些企业网络或IDC会屏蔽所有外部80端口出站,或强制走代理,此时需联系运维开通白名单
绕过防火墙临时验证(仅调试用)
若怀疑是防火墙问题但无法立即修改策略,可手动获取OCSP响应并缓存,跳过Nginx实时查询:
- 用OpenSSL命令提前拉取:
openssl ocsp -issuer chain.pem -cert fullchain.pem -url http://ocsp.int-x3.letsencrypt.org/ -respout example.ocsp - 配合cron每日更新,并在Nginx中用
ssl_stapling_file指令指定该文件(需Nginx ≥ 1.11.0) - 此法不解决根本问题,但能快速恢复stapling功能,同时帮你锁定问题确实在网络层











