nginx 不支持 ssl_ocsp 模块或指令,正确实现 ocsp stapling 需配置 ssl_stapling、ssl_stapling_verify、ssl_trusted_certificate 和 resolver 四个指令,并确保证书含有效 aia 扩展、信任链完整、dns 可达及时间准确。

Nginx 没有 ssl_ocsp 模块,也不存在名为 ssl_ocsp 的配置指令。这是一个广泛流传的误解。Nginx 实现高性能在线证书状态校验的正确方式是启用并正确配置 OCSP Stapling,它不依赖外部实时查询,而是由服务器主动缓存并“装订”OCSP 响应,在 TLS 握手时一并发送给客户端。
必须启用的四个核心指令
OCSP Stapling 在 Nginx 中由以下四个指令协同工作,缺一不可:
- ssl_stapling on;:开启 Stapling 功能,让 Nginx 主动获取并缓存 OCSP 响应
- ssl_stapling_verify on;:强制校验 OCSP 响应的签名和有效期,防止伪造或过期响应被使用
-
ssl_trusted_certificate /path/to/full-chain.pem;:指定用于验证 OCSP 响应签名的完整信任链(中间证书在前、根证书在后),不能复用
ssl_certificate文件 -
resolver 8.8.8.8 1.1.1.1 valid=300s;:显式声明 DNS 解析器(Nginx 不读取系统
/etc/resolv.conf),valid控制 DNS 缓存时长,避免握手阻塞
证书与链路准备要点
OCSP Stapling 能否正常工作,高度依赖证书本身和链路配置:
- 确认你的域名证书包含有效的 Authority Information Access (AIA) 扩展,其中需含可访问的 OCSP 响应器 URL(可用
openssl x509 -in cert.pem -text -noout | grep -A1 "OCSP"查看) -
ssl_certificate文件建议包含域名证书 + 所有中间证书(即 fullchain),但不强制要求含根证书;而ssl_trusted_certificate必须包含中间证书和根证书,且顺序为中间证书在前、根证书在后 - 确保系统时间准确(误差超过几分钟会导致 OCSP 响应校验失败)、防火墙允许出站 HTTPS 请求(用于首次获取 OCSP 响应)
验证是否生效的方法
配置完成后,可通过以下方式快速确认 OCSP Stapling 是否成功启用:
- 使用 SSL Labs 测试工具 输入域名,查看结果中 “OCSP stapling” 是否显示为 Yes
- 命令行测试:
openssl s_client -connect example.com:443 -status -servername example.com 2>&1 | grep -i "ocsp response",若返回非空内容且含OCSP Response Status: successful即表示正常 - Chrome 或 Edge 浏览器打开开发者工具 → Security 标签页 → 点击 “View certificate” → 查看 “Certificate Status” 是否为 Good
常见故障与应对
启用 ssl_stapling_verify on 后出现 502、握手失败或连接中断,通常是以下原因导致:
-
ssl_trusted_certificate文件缺失、路径错误、或内容不完整(漏掉中间 CA 或顺序颠倒) - DNS 解析器不可达,或
resolver未设置valid参数,导致每次握手都尝试解析 OCSP 域名 - 证书 AIA 中的 OCSP URL 不可达(如被屏蔽、超时、返回 404/500)、或 CA 已停用该响应器
- 未重启 Nginx 或未重载配置(
nginx -s reload),旧配置仍在运行











