启用 ssl_stapling 可减少 150–300ms TLS 握手延迟,需满足 Nginx≥1.3.7、OpenSSL≥1.0.1、证书含 authorityInfoAccess 扩展、时间准确、证书链完整,并配置 ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate 和 resolver 四项指令。

直接启用 ssl_stapling 能让 Nginx 在 TLS 握手阶段,把证书吊销状态“装订”进响应包里,客户端无需再单独连 CA 查询 OCSP,通常可省下 150–300ms 延迟。这对反向代理场景特别有效——它不改变后端服务逻辑,却能从入口层显著优化首屏加载和移动端体验。
确认基础环境与证书支持
不是所有证书和系统都默认支持 OCSP Stapling。必须同时满足以下条件:
- Nginx ≥ 1.3.7(推荐 1.21.0+),且编译时含
--with-http_ssl_module - OpenSSL ≥ 1.0.1(推荐 1.1.1+)
- 你的 SSL 证书中包含
authorityInfoAccess扩展字段(多数主流 CA 签发的证书已内置) - 服务器时间准确(误差需控制在 5 分钟内),否则 OCSP 响应校验会失败
- 证书链完整,中间 CA 和根 CA 都要能被正确识别
关键配置项一个都不能少
只写 ssl_stapling on 是无效的。必须四条指令协同工作:
-
ssl_stapling on;—— 启用装订功能,Nginx 主动获取并缓存 OCSP 响应 -
ssl_stapling_verify on;—— 强制校验 OCSP 响应签名和有效期,防止伪造或过期数据 -
ssl_trusted_certificate /path/to/full-chain-trusted.pem;—— 这个文件不是你的站点证书,而是专用于验证 OCSP 响应签名的信任链(顺序:中间 CA 在前,根 CA 在后) -
resolver 8.8.8.8 1.1.1.1 valid=300s;—— 显式指定 DNS 解析器,Nginx 不读系统 resolv.conf;valid=300s防止 DNS 缓存过期导致 stapling 中断
建议追加:resolver_timeout 5s;,避免 DNS 查询卡住握手过程;如需调试或覆盖证书自带 OCSP 地址,可用 ssl_stapling_responder 指定自定义地址。
私有 CA 或内网环境的特殊处理
若你用的是私有 CA(比如企业内网、AI 模型平台后台),标准 OCSP Stapling 会失效——因为 Nginx 默认无法访问内网 OCSP 响应器,客户端也会因查询失败而延迟甚至降级。
解决思路不是跳过验证,而是让 Nginx 能提供可信的吊销状态:
- 手动调用私有 OCSP 响应器生成响应(例如用
openssl ocsp工具) - 将响应保存为本地文件(如
/etc/nginx/ocsp-response.der) - 在 server 块中启用:
ssl_stapling_file /etc/nginx/ocsp-response.der; - 仍需保留
ssl_stapling_verify on和正确的ssl_trusted_certificate,确保响应真实有效
验证是否生效
配置完成后重启 Nginx,用 OpenSSL 快速验证:
openssl s_client -connect your-domain.com:443 -servername your-domain.com -status -tlsextdebug &1 | grep -i "OCSP response"成功时应看到类似输出:
OCSP Response Status: successful (0x0)若显示 parse error、no response sent 或 verify error,说明证书链、信任文件路径或时间同步存在问题,需逐项排查。











