ssl_trusted_certificate 是 ocsp 装订校验的信任锚点,必须仅含中间 ca 和根 ca 证书、顺序为中间在前根在后、路径独立于 ssl_certificate,且需配合 ssl_stapling on、ssl_stapling_verify on 和 resolver 使用。

要让 OCSP 装订校验真正合规,ssl_trusted_certificate 不是可选项,而是验证链的“信任锚点”——它必须精准提供用于验签 OCSP 响应的完整 CA 证书链,且顺序、内容、用途都不可错。
ssl_trusted_certificate 的核心作用
这个指令指定的文件,专用于验证 OCSP 响应本身的签名是否可信。Nginx 不会从 ssl_certificate 自动提取,也不读系统证书库。它只做一件事:用其中的证书去验证 OCSP 响应里那个“OCSP 签发者”的签名是否合法、身份是否匹配、有效期是否有效。
常见误区是把它当成普通证书链复用——比如直接指向 fullchain.pem(含域名证书)或只放根证书。这两种都会导致校验失败。
必须满足的三个硬性条件
- 内容纯净:只包含中间 CA 证书和根 CA 证书,绝对不含你的域名证书(即不能有第一个证书是 example.com.crt 的情况)
-
顺序严格:中间证书在前,根证书在后。例如 Let’s Encrypt 用户,应先拼
lets-encrypt-r3.pem(中间),再拼isrgrootx1.pem(根) -
路径独立:必须单独配置路径,不能和
ssl_certificate共用同一个文件。推荐命名如/etc/nginx/ssl/trusted-ca.pem
生成与验证方法
生成命令示例(以 Let’s Encrypt 为例):
cat /path/to/intermediate.pem /path/to/root.pem > /etc/nginx/ssl/trusted-ca.pem
验证是否可用(不重启 Nginx 即可确认):
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 格式是否有损坏。
配合其他必要配置才能生效
ssl_trusted_certificate 单独存在毫无意义。它必须与以下三项共存于同一 server 块内:
-
ssl_stapling on;—— 启用装订机制 -
ssl_stapling_verify on;—— 开启强校验开关 -
resolver 1.1.1.1 8.8.8.8 valid=300s;—— 显式 DNS 解析器,带缓存时间
缺任何一项,Nginx 都无法完成完整验证流程,TLS 握手将直接失败(表现为 502 或 handshake failed)。











