Nginx 不支持 ssl_ocsp 指令,正确实现 OCSP 状态验证需配置 ssl_stapling、ssl_stapling_verify、ssl_trusted_certificate 和 resolver 四个指令,且须确保证书链完整、DNS 可达、系统时间准确。

nginx 并没有 ssl_ocsp 这个指令。这是一个常见误解——Nginx 官方配置指令中**不存在**名为 ssl_ocsp 的选项。
真正可用的 OCSP 相关指令是 ssl_stapling 系列
Nginx 通过以下四个核心指令实现 OCSP 状态验证(即“装订”并校验 OCSP 响应),而非直接查询 CRL 或调用虚构的 ssl_ocsp:
- ssl_stapling on;:启用 OCSP Stapling 功能,让 Nginx 在 TLS 握手时主动发送缓存的 OCSP 响应
-
ssl_stapling_verify on;:强制 Nginx 校验收到的 OCSP 响应签名和有效期(必须配合
ssl_trusted_certificate) - ssl_trusted_certificate /path/to/full-chain.pem;:指定用于验证 OCSP 响应签名的完整信任链(含中间 CA + 根 CA),顺序为中间证书在前、根证书在后
-
resolver 8.8.8.8 1.1.1.1 valid=300s;:显式配置 DNS 解析器,Nginx 不读取系统 resolv.conf,且需设置
valid缓存时间
CRL 和 OCSP 是两种不同机制,Nginx 不混用
你提到的“实时证书吊销列表(CRL)校验”,在 Nginx 中对应的是 ssl_crl 指令,它与 OCSP Stapling 完全无关:
-
ssl_crl要求你手动下载、维护并定期更新 PEM 格式的 CRL 文件(如ca.crl.pem) - 它必须搭配
ssl_client_certificate(CA 公钥)和ssl_verify_client on才生效,仅用于客户端证书校验场景 - 它不适用于服务器证书(即你对外提供的 HTTPS 网站证书)的吊销检查
网关层要验证自己所用证书是否被吊销?用 OCSP Stapling
如果你的目标是在反向代理或 API 网关层,确保 Nginx 自己使用的服务器证书(ssl_certificate)未被 CA 吊销,正确路径是启用 OCSP Stapling:
- 确认你的证书包含有效的 Authority Information Access (AIA) 扩展,其中含 OCSP 响应器 URL(可用
openssl x509 -in cert.pem -text -noout | grep -A1 "OCSP"查看) - 确保
ssl_certificate文件中包含完整证书链(服务器证书 + 所有中间证书),或单独用ssl_trusted_certificate提供信任链 - 测试 OCSP 可达性:
openssl ocsp -issuer ca-bundle.pem -cert fullchain.pem -url http://ocsp.example-ca.com -text - 配置生效后,可通过浏览器开发者工具 → Security 标签页查看 “Certificate Status: Good” 或使用
curl -vI https://yoursite.com观察响应头是否含OCSP相关信息
常见失败原因与避坑提示
配置后握手失败(502 / SSL handshake failed)往往源于以下组合缺失:
- 只开了
ssl_stapling_verify on,但没配ssl_trusted_certificate或其内容不完整(漏中间 CA) - 未配置
resolver,或 DNS 不可达(尤其内网环境需指定内部 DNS) - 系统时间偏差超过 5 分钟(OCSP 响应含严格有效期,Nginx 拒绝使用)
- 防火墙或安全组拦截了出站到 OCSP URL 的 HTTPS(443)或 HTTP(80)连接











