nginx开启ocsp stapling需同时满足五项硬性前提(证书含ocsp uri、nginx≥1.3.7、openssl≥1.0.1、服务器可直连ocsp地址、系统时间偏差≤±5分钟)并配置四条核心指令(ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver),缺一不可,否则静默失效。

开启 Nginx 的 OCSP Stapling 不是加一行 ssl_stapling on 就能生效的事。它是一套需要环境、证书、配置三者严格协同的机制,任一环节缺失都会静默失效——Nginx 不报错、不警告,但客户端仍要自己查 OCSP,TLS 握手凭空多出 150–300ms 延迟。
确认五项硬性前提是否全部满足
这五项缺一不可,否则 stapling 自动关闭:
- 证书必须含有效 OCSP URI:用命令检查
openssl x509 -in your.crt -text -noout | grep -A1 "OCSP"
输出中需明确出现类似OCSP - URI:http://ocsp.int-x3.letsencrypt.org - Nginx 版本 ≥ 1.3.7(生产建议 ≥ 1.11.0);OpenSSL ≥ 1.0.1(推荐 1.1.1+ 或 3.0+)
- 服务器能直连 OCSP URI 地址:比如
curl -I http://ocsp.int-x3.letsencrypt.org或用openssl ocsp命令测试连通性与响应有效性 - 系统时间偏差 ≤ ±5 分钟:OCSP 响应含严格时间戳,超时即被拒绝,可用
chronyc tracking或ntpdate -q pool.ntp.org核查 - 证书链完整:Nginx 的
ssl_certificate必须指向包含域名证书 + 所有中间证书的 PEM 文件(如 Let’s Encrypt 的fullchain.pem)
在 server 块中写全四条核心指令
全部配置必须放在监听 443 的 server { ... } 块内,不能放 http 块顶层或 location 中:
-
ssl_stapling on;—— 显式启用装订功能(默认为 off) -
ssl_stapling_verify on;—— 强制校验 OCSP 响应签名、颁发者和有效期,防止伪造或过期数据被转发 -
ssl_trusted_certificate /path/to/full-chain-trusted.pem;—— 指向仅含中间证书 + 根证书的 PEM 文件(顺序:中间在前、根在后),不能含站点证书本身,也不能复用ssl_certificate所指文件 -
resolver 8.8.8.8 1.1.1.1 223.5.5.5 valid=300s;—— Nginx 不读/etc/resolv.conf,必须显式指定至少两个 DNS;valid=300s防止 DNS 缓存过期导致 stapling 中断
建议追加:resolver_timeout 5s;,避免单次 DNS 查询卡住整个 TLS 握手。
验证是否真正生效
不能只看配置重载成功,要确认客户端实际收到了 stapled 响应:
- 终端执行:
openssl s_client -connect example.com:443 -status -servername example.com 2>&1 | grep -A 2 "OCSP response"
成功时应显示OCSP response: successful (0x0)和CertStatus: good - 检查 Nginx 错误日志,搜索关键词:
ocsp、no resolver defined、verify failed、timeout - 用 SSL Labs 测试页,查看结果中 “OCSP stapling” 是否显示 Yes
特别注意 ssl_trusted_certificate 的生成
这个文件是成败关键,常见错误就是内容不合规:
- Let’s Encrypt 用户可直接使用
chain.pem(不含域名证书)或从fullchain.pem中手动剔除首段(即你的域名证书),保留后续所有中间及根证书 - 自建 CA 或企业证书需手动拼接:
cat intermediate.crt root.crt > full-chain-trusted.pem - 验证该文件是否有效:
openssl ocsp -issuer intermediate.crt -cert your.crt -url http://ocsp.example.com -CAfile full-chain-trusted.pem -text
看到responseStatus: successful才算通过











