跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何使用 ssl_stapling_file 加载离线 OCSP 响应文件以规避公网解析延迟

直接用 ssl_stapling_file 指向本地 DER 格式 OCSP 响应文件可跳过网络查询,前提需满足三项硬性条件:DER 编码、对应域名证书且签名可被 CA 链验证、Next Update 未过期;配置须同时启用 ssl_stapling、ssl_stapling_verify、指定 ssl_stapling_file 和 ssl_trusted_certificate;需定期更新响应文件并重载 Nginx。 直接用
ssl_stapling_file
指向本地 DER 格式 OCSP 响应文件,就能跳过网络查询、DNS 解析和 CA 服务器访问全过程,彻底规避公网延迟。关键不在于“关闭网络”,而在于让 Nginx 完全信任并复用一个已验证有效的响应。 前提:准备合法可用的 OCSP 响应文件 该文件必须满足三项硬性条件,缺一不可: 格式为标准 DER 编码(不是 PEM),可用
file example.ocsp
确认输出含 data 或 OCSP Response ; 响应对应当前
ssl_certificate
中的域名证书,且签名能被
ssl_trusted_certificate
中的 CA 链验证; 响应内含有效时间窗口(
Next Update
在未来),Nginx 不会自动刷新,过期后需人工替换。 生成步骤(在有网环境一次性完成) 推荐在跳板机或开发机上执行,确保环境可连通 CA 的 OCSP 地址: 从证书中提取 OCSP URL:
openssl x509 -in fullchain.pem -noout -text | grep -A1 "OCSP"
; 确认
ssl_trusted_certificate
所指文件含完整中间 CA + 根 CA(顺序:中间在前,根在后); 运行获取命令(注意加
-header Host
防 HTTP/1.1 兼容问题):
openssl ocsp -issuer intermediate.crt -cert example.com.crt -url http://ocsp.int-x3.letsencrypt.org -header "Host" "ocsp.int-x3.letsencrypt.org" -respout /tmp/example.ocsp
; 立即验证:
openssl ocsp -respin /tmp/example.ocsp -CAfile full-chain-trusted.pem -text
,确认输出含 Response verify OK 且 Next Update 合理。 Nginx 配置要点(离线专用) 以下四行必须同时存在,并放在
server
块 HTTPS 监听内:
ssl_stapling on;
—— 启用 stapling 功能,否则不发送响应;
ssl_stapling_verify on;
—— 强制校验本地文件签名与有效期,防止伪造或过期数据;
ssl_stapling_file /var/lib/nginx/ocsp/example.ocsp;
—— 显式指定 DER 文件路径;
ssl_trusted_certificate /etc/nginx/ssl/internal-ca-trust.pem;
—— 提供验证该 OCSP 响应所需的可信 CA 链(不能是
ssl_certificate
文件)。 无需配置
resolver
,也不建议开启
ssl_stapling
自动模式,避免因网络不可达触发降级逻辑。 维护提醒 OCSP 响应不是一劳永逸的: 查看有效期:
openssl ocsp -respin example.ocsp -text | grep "Next Update"
; 建议用
cron
定期更新(如每 4 小时),但更新频率不能超过
Next Update
时间; 更新后 reload Nginx:
nginx -t && nginx -s reload
,无需重启。

相关文章