Nginx OCSP Stapling 响应文件需手动清理与更新:清理即删除或重命名指定路径的单个二进制文件(如rm /etc/nginx/ssl/example.com.ocsp),更新须用openssl ocsp重新拉取并原子替换,不可覆盖写入;文件过期以nextUpdate时间为准,Nginx每次握手自动读取,无需reload。

Nginx 的 OCSP Stapling 响应数据本身没有自动清理机制,它不走内存缓存或 proxy_cache,而是依赖你手动管理的静态文件。所谓“清理”和“更新”,本质是替换那个二进制 OCSP 响应文件——旧的删掉或覆盖,新的原子写入即可。
OCSP 响应文件怎么清理
它不是缓存目录里的可批量扫描文件,而是一个明确路径的单个文件(比如 /etc/nginx/ssl/example.com.ocsp)。清理就是删除或重命名它:
- 直接删除:
rm /etc/nginx/ssl/example.com.ocsp - 或临时移走:
mv /etc/nginx/ssl/example.com.ocsp /etc/nginx/ssl/example.com.ocsp.bak - 注意:删完后若未及时提供新文件,Nginx 在 TLS 握手时会因找不到响应而跳过 stapling,但不会报错或中断连接
OCSP 响应文件怎么更新
必须用 openssl ocsp 重新拉取,并确保原子写入(避免 Nginx 读到损坏或不完整的内容):
- 在内网或可信环境执行拉取命令,例如:
openssl ocsp -issuer intermediate.crt -cert example.com.crt -url http://ocsp.internal-ca.local -respout /tmp/new.ocsp -text - 验证响应有效性:
openssl ocsp -verify_other ca.crt -CAfile internal-trust.pem -respin /tmp/new.ocsp -text | grep "Response verify OK" - 原子替换(推荐):
mv /tmp/new.ocsp /etc/nginx/ssl/example.com.ocsp - 切勿用
cp或重定向覆盖原文件,否则 Nginx 可能在写入中途读取到截断内容,导致握手失败
怎么判断 OCSP 响应是否过期
关键看响应里的 nextUpdate 时间字段,不是文件修改时间:
- 用命令查看:
openssl ocsp -respin /etc/nginx/ssl/example.com.ocsp -text | grep -A2 "Next Update" - 如果当前时间已超过
nextUpdate,该响应即失效,客户端可能拒绝信任 - 建议用 cron 每 12 小时检查一次,例如:
0 */12 * * * /usr/bin/openssl ocsp -respin /etc/nginx/ssl/example.com.ocsp -text 2>/dev/null | grep -q "$(date -d '1 hour hence' '+%b %d %H')"(粗略判断是否即将过期)
更新后要不要 reload Nginx
不需要。Nginx 在每次 TLS 握手时都会重新读取 ssl_stapling_file 指向的文件,只要路径不变、文件可读、内容合法,reload 完全多余。反而 reload 可能中断连接,增加风险。


















