ssl_trusted_certificate必须严格指定仅含中间ca和根ca(顺序:中间在前、根在后)的pem文件,作为ocsp响应签名验证的独立信任锚点,且须与ssl_stapling on、ssl_stapling_verify on、resolver共存于同一server块中,缺一则校验失效。

要让 OCSP Stapling 的签名验证真正生效,ssl_trusted_certificate 必须精准提供用于验签 OCSP 响应的信任链——它不是可选项,而是整个校验流程的起点。Nginx 不会自动从系统或 ssl_certificate 提取根证书,必须手动指定一个只含中间 CA 和根 CA 的 PEM 文件,且顺序、内容、路径都必须严格符合要求。
ssl_trusted_certificate 的核心定位
这个指令专用于验证 OCSP 响应本身的数字签名是否可信。Nginx 拿它里面的证书去比对 OCSP 响应中“签发者”的身份和签名有效性,不涉及你的域名证书,也不读取操作系统信任库。
- 它不是 ssl_certificate 的补充,而是独立的信任锚点
- 不能包含你的站点证书(比如 example.com.crt),否则校验直接失败
- 不能只放根证书,缺少中间证书会导致 “issuer certificate not found” 报错
文件内容与顺序必须严格正确
以 Let’s Encrypt 为例,你拿到的证书链通常包括:域名证书 → R3 中间证书 → ISRG Root X1 根证书。而 ssl_trusted_certificate 只需后两者,且顺序不可颠倒:
- 第一段 PEM 是中间证书(如 lets-encrypt-r3.pem)
- 第二段 PEM 是根证书(如 isrgrootx1.pem)
- 用 cat 合并:cat intermediate.pem root.pem > /etc/nginx/ssl/trusted-ca.pem
必须配合其他三项配置共存
单独设置 ssl_trusted_certificate 没有意义,它必须和以下三条指令一起写在同一个 server { listen 443 ssl; } 块内:
- ssl_stapling on; —— 启用装订功能
- ssl_stapling_verify on; —— 开启强校验开关
- resolver 1.1.1.1 8.8.8.8 valid=300s; —— 显式指定 DNS,Nginx 不读 /etc/resolv.conf
快速验证是否配置成功
不用重启 Nginx,用 openssl 命令本地测试即可:
openssl ocsp -issuer intermediate.pem -cert example.com.crt -url http://ocsp.int-x3.letsencrypt.org -CAfile /etc/nginx/ssl/trusted-ca.pem -text
若输出中出现 Response verify OK,说明文件可用;若报 unable to get issuer certificate 或 signature verification failed,大概率是中间证书缺失、顺序错误或 PEM 格式损坏。











