OCSP Stapling 不是仅加 ssl_stapling on 就能生效的功能,而需同时满足 Nginx≥1.3.7、证书含有效 OCSP URI 且网络可达、证书链完整(fullchain.pem)、系统时间误差≤±5分钟,以及 server 块内四条配置:ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate 指向含中间+根证书的正确路径、resolver 显式配置并带 valid=300s。

直接加 ssl_stapling on 不会生效。OCSP 装订是服务端主动获取、签名验证、缓存分发的一整套机制,必须同时满足版本、网络、证书、时间、配置五项硬性条件,缺一不可。
确认基础运行前提
四项底层条件不达标,后续配置全无效:
- Nginx 版本 ≥ 1.3.7;生产环境建议用 1.11.0 或更高——旧版对 OCSP 错误响应处理不稳定,容易静默失败;
- 服务器能直连证书中 Authority Information Access 扩展指定的 OCSP 地址(如 http://ocsp.int-x3.letsencrypt.org),可用命令测试:
openssl ocsp -url http://ocsp.int-x3.letsencrypt.org -cert your.crt -CAfile fullchain.pem -text
看到 responseStatus: successful 才算通; - 证书链完整:Nginx 的 ssl_certificate 必须是域名证书 + 中间证书合并的 PEM 文件(Let’s Encrypt 的 fullchain.pem 就是标准格式);
- 系统时间误差 ≤ 5 分钟——OCSP 响应含严格有效期,偏差过大将被 Nginx 拒绝校验。
四条核心配置必须同时写全
只开 ssl_stapling on 和 ssl_stapling_verify on 是常见错误。以下四行需全部出现在 server 块的 443 配置内,路径和参数必须准确:
- ssl_stapling on;—— 启用功能,让 Nginx 主动发起 OCSP 请求;
- ssl_stapling_verify on;—— 强制校验 OCSP 响应的签名、颁发者和时间有效性,防止缓存污染或伪造;
- ssl_trusted_certificate /path/to/full-chain-trusted.pem;—— 这不是 ssl_certificate 文件,而是专用于验证 OCSP 响应签名的“信任链”,必须包含签发 OCSP 响应器的中间 CA + 根 CA,顺序为中间证书在前、根证书在后;
- resolver 8.8.8.8 1.1.1.1 valid=300s;—— 显式指定 DNS 解析器,Nginx 不读 /etc/resolv.conf;valid=300s 避免 DNS 缓存过期导致 stapling 失效。
推荐追加:resolver_timeout 5s;,防止 DNS 查询卡住 TLS 握手。
验证是否真正生效
配置重载后,用 OpenSSL 工具实测:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status -tlsextdebug &1 | grep -i "OCSP response"
若输出中出现 OCSP Response Status: successful (0x0),说明已成功启用;若只显示 OCSP response: no resp,说明某一项前提或配置未满足。











