ocsp stapling 能减少150–300ms https握手延迟,需同时满足五项前提(证书含ocsp uri、nginx≥1.3.7、openssl≥1.0.1、时间误差≤±5分钟、证书链完整)并配置四条指令(ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver),缺一不可,否则静默失效。

开启 OCSP Stapling 不是加一行 ssl_stapling on 就能提速的开关,而是一套必须全部满足、协同工作的机制。它能让 Nginx 在 TLS 握手时,把 CA 签发的证书吊销状态(OCSP 响应)一并发送给客户端,省去浏览器自己查 OCSP 服务器的那一次网络请求,实测可减少 150–300ms 的首次 HTTPS 握手延迟。
确认五项基础前提是否全部满足
缺任何一项,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) - 服务器能直连 OCSP 地址:用
curl -v http://ocsp.int-x3.letsencrypt.org或openssl ocsp -url http://ocsp.int-x3.letsencrypt.org -cert your.crt -CAfile fullchain.pem -text测试,返回responseStatus: successful
HTTPS server 块内写全四条核心指令
所有配置必须放在监听 443 的 server { listen 443 ssl; } 块内,不能写在 http 块顶层或 location 块中:
-
ssl_stapling on;——显式启用装订功能 -
ssl_stapling_verify on;——强制校验 OCSP 响应签名、颁发者及有效期,防止伪造或过期数据被缓存 -
ssl_trusted_certificate /path/to/full-chain-trusted.pem;——指向仅含中间证书 + 根证书的 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 分钟
特别注意两个易错点
这两个问题最常导致 stapling 静默失效,且日志提示极隐蔽:
-
ssl_trusted_certificate内容必须纯净:只含中间证书和根证书,按顺序拼接(中间在前、根在后),不能混入站点证书,也不能复用ssl_certificate所指文件 -
resolver必须能解析并连通 OCSP 域名(例如ocsp.int-x3.letsencrypt.org)。若使用私有 CA 或内网环境,resolver应指向可解析其 OCSP 地址的 DNS 服务
推荐补充的稳定性配置
这些不是必需项,但能显著提升实际运行中的鲁棒性:
-
resolver_timeout 5s;——避免 DNS 查询卡住整个 TLS 握手 -
ssl_session_cache shared:SSL:10m; ssl_session_timeout 4h;——启用会话复用,减少重复触发 OCSP 查询 - Let’s Encrypt 用户可直接复用
chain.pem作为ssl_trusted_certificate路径(如/etc/letsencrypt/live/example.com/chain.pem)
验证是否真正生效,不要只看配置重载成功。终端执行:openssl s_client -connect example.com:443 -status -servername example.com 2>&1 | grep -A 2 "OCSP response"
成功时应看到 OCSP response: successful (0x0) 和 CertStatus: good。也可用 SSL Labs 测试页查看结果中 “OCSP stapling” 是否显示 Yes。











