OCSP Stapling 生效需同时满足五项前提并配置四条指令:证书含有效OCSP URI、Nginx≥1.3.7、OpenSSL≥1.0.1、系统时间误差≤±5分钟、证书链完整;且必须在server块中启用ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver。

Nginx 配置 ssl_stapling 和 ssl_stapling_verify 不是加两行就生效的开关,而是一套必须协同工作的机制。单独启用其中任一指令,或遗漏配套配置,都会导致 OCSP Stapling 静默失效——Nginx 不报错,但客户端收不到装订响应。
必须同时满足的五项前提条件
这些是运行基础,缺一不可,否则后续配置全部无效:
-
证书中包含有效的 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+ 或更新)
系统时间误差 ≤ ±5 分钟:可用
chronyc tracking或ntpdate -q pool.ntp.org检查证书链完整:
ssl_certificate必须指向域名证书 + 所有中间证书合并的 PEM 文件(如 Let’s Encrypt 的fullchain.pem)
四条核心指令必须共存于同一 server 块
全部写在 server { listen 443 ssl; } 块内,不能放在 http、location 或其他嵌套块中:
ssl_stapling on;
显式启用 OCSP 装订功能(默认关闭)ssl_stapling_verify on;
强制 Nginx 在发出 OCSP 响应前,本地校验其签名、颁发者身份和时间有效性(thisUpdate/nextUpdate),防止伪造或过期响应被缓存使用-
ssl_trusted_certificate /path/to/full-chain-trusted.pem;
指向专用于验签 OCSP 响应的信任链文件,内容为:- 中间 CA 证书(如 Let’s Encrypt R3)在前
- 根 CA 证书(如 ISRG Root X1)在后
-
不包含你的域名证书,也不含私钥
推荐生成方式:cat intermediate.crt root.crt > /etc/nginx/ssl/full-chain-trusted.pem
resolver 1.1.1.1 8.8.8.8 223.5.5.5 valid=300s;
Nginx 不读/etc/resolv.conf,必须显式指定至少两个 DNS 服务器;valid=300s表示 DNS 缓存 5 分钟,避免因 DNS 失效中断 stapling
验证是否真正生效
不要只看配置重载成功,要确认客户端实际收到响应:
-
终端测试:
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
不复杂但容易忽略


















