在完全断网环境中,Nginx需用ssl_stapling_file手动加载DER格式OCSP响应文件实现无网络OCSP Stapling,必须同时配置ssl_stapling on、ssl_stapling_verify on、ssl_stapling_file和ssl_trusted_certificate,且文件须为DER格式、匹配证书、Next Update晚于2026年4月28日。

在完全断网或网络不可达的环境中,Nginx 默认的 ssl_stapling on 会因无法访问 CA 的 OCSP 服务器而失效,导致 TLS 握手延迟、客户端反复重试或降级验证。此时不能关闭 stapling,而应切换为“静态文件模式”——即用 ssl_stapling_file 手动加载预生成的、有效的 OCSP 响应文件,让 stapling 继续工作且保持可验证性。
核心配置必须同时启用四项
仅开 ssl_stapling on 不够,断网下必须搭配以下指令才能生效:
-
ssl_stapling on;—— 启用 stapling 功能开关 -
ssl_stapling_verify on;—— 强制校验本地 OCSP 文件的签名、时间戳和签发链(防止伪造或过期) -
ssl_stapling_file /path/to/valid.ocsp;—— 指向 DER 格式响应文件(不是 PEM!) -
ssl_trusted_certificate /path/to/internal-chain.pem;—— 提供完整信任链(根 + 中间 CA),专用于验证 OCSP 响应签名
OCSP 文件必须满足三个硬性条件
文件无效是断网 stapling 失败的最常见原因:
- 格式必须是 DER 编码二进制(可用
file example.ocsp验证输出含 “data” 字样;若显示 “PEM certificate” 则需转换:openssl ocsp -respin in.pem -respout out.ocsp) - 内容必须对应当前
ssl_certificate所用的服务器证书(证书序列号、颁发者需严格匹配) - 响应中
Next Update时间必须晚于当前系统时间(2026年4月28日),否则 Nginx 直接忽略该文件
如何在有网环境提前生成并定期更新
需在临时联网机器(如运维跳板机)上完成一次获取,并部署到目标离线服务器:
- 确认证书 AIA 中的 OCSP 地址:
openssl x509 -in fullchain.pem -noout -text | grep -A1 "Authority Information Access" - 准备信任链文件(中间 CA + 根 CA,顺序不能错)
- 执行获取命令:
openssl ocsp -issuer intermediate.crt -cert server.crt -url http://ocsp.example-ca.local -respout /tmp/server.ocsp - 立即验证:
openssl ocsp -respin /tmp/server.ocsp -CAfile full-chain-trusted.pem -text,确认输出含 “Response verify OK” 和有效的时间窗口 - 将
.ocsp文件拷贝至离线服务器固定路径,并设好权限(如chown root:root,chmod 400)
私有 CA 环境的特别注意点
若使用自建 CA(如 OpenSSL CA、CFSSL),还需额外检查:
- OCSP 响应器服务是否实际运行且地址可达(例如
curl -v http://ocsp.internal-ca.local) -
ssl_trusted_certificate中不能混入任何公网 CA 证书,否则 Nginx 可能选错信任锚导致验证失败 - 建议用 cron 定期刷新(如每 4 小时),但要读取响应中的
Next Update值动态控制更新频率,避免写入已过期文件


















