直接用 ssl_stapling_file 指向本地 DER 格式 OCSP 响应文件可实现完全离线 OCSP Stapling,但必须同时配置 ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate 及正确权限,且文件须为未过期的合法 DER 格式。

直接用 ssl_stapling_file 指向一个本地 DER 格式 OCSP 响应文件,就能让 Nginx 跳过所有网络查询,完全离线完成 OCSP Stapling。关键不在“怎么写指令”,而在于响应文件是否合法、路径是否可读、验证链是否匹配。
确保响应文件是标准 DER 格式且未过期
OpenSSL 生成的响应必须是二进制 DER 编码,不是 PEM。错误示例:openssl ocsp -respout xxx.pem(输出 PEM)会导致 Nginx 启动失败或 stapling 被静默忽略。
- 正确命令:用
-respout输出 DER 文件,例如openssl ocsp -issuer intermediate.crt -cert example.com.crt -url http://ocsp.int-x3.letsencrypt.org -respout /etc/nginx/ssl/example.ocsp - 验证有效性:运行
openssl ocsp -respin /etc/nginx/ssl/example.ocsp -text -CAfile full-chain-trusted.pem,确认输出含 Response verify OK 和 Next Update 时间在将来 - 注意:Nginx 不会自动更新该文件,一旦超过
Next Update,stapling 将失效,需人工重拉
配置 Nginx 启用离线 stapling 的最小必要组合
仅设 ssl_stapling_file 不够,Nginx 必须同时启用验证逻辑并禁用自动查询行为,否则可能因网络不可达触发警告或回退到无 stapling 状态。
-
ssl_stapling on;—— 必须开启,否则不发送任何 stapled 响应 -
ssl_stapling_verify on;—— 强制校验响应签名、时间戳和信任链,防止伪造或过期数据被使用 -
ssl_stapling_file /etc/nginx/ssl/example.ocsp;—— 显式指定本地 DER 文件路径,Nginx 将跳过 resolver 和 OCSP 查询 -
ssl_trusted_certificate /etc/nginx/ssl/full-chain-trusted.pem;—— 此文件仅用于验证 OCSP 响应签名,必须包含签发该服务器证书的中间 CA + 根 CA(顺序:中间在前,根在后),不能混入服务器证书或公网 CA
权限与路径注意事项
Nginx 工作进程(通常是 www-data 或 nginx 用户)必须对 .ocsp 文件及其所在目录有读取权限,否则启动时不会报错,但 stapling 实际不生效。
- 推荐路径:使用
/etc/nginx/ssl/或/var/lib/nginx/ocsp/,避免放在临时目录(如/tmp)导致重启丢失 - 检查权限:运行
ls -l /etc/nginx/ssl/example.ocsp,确保属组可读;必要时执行chown root:www-data /etc/nginx/ssl/example.ocsp && chmod 640 /etc/nginx/ssl/example.ocsp - 测试加载:修改配置后执行
nginx -t,成功不代表 stapling 生效,还需用openssl s_client -connect example.com:443 -status验证响应是否实际发出











