ssl_trusted_certificate专用于本地ocsp响应验签,需提供仅含中间ca和根ca(顺序为中间在前、根在后)的精简pem文件,不可含服务器证书或私钥,且必须由nginx可读(权限644),配合ssl_stapling_verify on使用。

配置 ssl_trusted_certificate 专用于本地静态 OCSP 响应验证,核心是提供一份**精简、顺序正确、仅含信任锚的 PEM 文件**——它不参与 TLS 握手,只服务于 ssl_stapling_verify on 对本地 DER 格式 OCSP 响应的签名验签。
这个文件必须只包含中间 CA + 根 CA(不含服务器证书)
它不是 ssl_certificate 的副本,也不能混入你的域名证书或私钥。Nginx 用它来构建信任链,验证 OCSP 响应是否由该证书链中的某个 CA(通常是中间 CA)合法签发。
- 顺序必须是:中间证书在前,根证书在后(从叶到根)
- 常见错误:把
fullchain.pem直接复用——它虽含中间证书,但通常不含根证书(Let’s Encrypt 的 fullchain.pem 就不含 ISRG Root X1) - 正确做法:手动拼接,例如:
路径和权限需 Nginx 可读且独立存放
该文件路径由 ssl_trusted_certificate 显式指定,建议与 ssl_certificate_key 同级但分离管理,避免误操作污染。
- 路径示例:
/etc/nginx/ssl/ocsp-trust-chain.pem - 权限建议:
644(属主 root,Nginx worker 进程可读) - 禁止设为
600或400且属主非 root,否则 Nginx 启动时会报错“permission denied”
必须与 ssl_stapling_file 和 ssl_stapling_verify 配合使用
启用离线 OCSP Stapling 时,ssl_trusted_certificate 是验证环节不可替代的一环。缺它,Nginx 无法确认本地 OCSP 响应是否可信,即使文件存在也会静默跳过 stapling。
- 最小有效配置块(server 块内):
ssl_stapling on;ssl_stapling_verify on;ssl_stapling_file /etc/nginx/ssl/example.ocsp;ssl_trusted_certificate /etc/nginx/ssl/ocsp-trust-chain.pem; - 注意:此时
resolver和ssl_stapling_verify不再用于网络请求,但仍必需存在——它们共同激活 Nginx 的本地响应校验逻辑
提前验证文件有效性最可靠
别等重启 Nginx 才发现链有问题。用 OpenSSL 模拟验签流程,快速定位缺失或顺序错误:
- 命令:
openssl ocsp -respin /etc/nginx/ssl/example.ocsp -text -CAfile /etc/nginx/ssl/ocsp-trust-chain.pem - 成功标志:输出中含 Response verify OK,且 Next Update 时间晚于当前系统时间
- 失败常见提示:
“unable to get certificate CRL” → 中间证书缺失或顺序颠倒
“signature verification failed” → 根证书不匹配或文件被截断











