证书链不完整导致“此证书不受信任”,因nginx仅发送域名证书而缺失中间证书,浏览器无法构建完整信任路径;需手动合并域名证书与中间证书至pem文件并正确粘贴至宝塔ssl设置中。

证书链不完整:为什么浏览器显示“此证书不受信任”
宝塔面板里点了“保存”SSL配置,Nginx也重启了,但Chrome仍报“此证书不受信任”,大概率不是证书没生效,而是证书链缺失。Nginx只把ssl_certificate文件里的内容发给浏览器,如果这个文件里只有你的域名证书(domain.crt),没带中间证书,浏览器就拼不出完整信任路径。
验证方法很简单:在 Chrome 地址栏点锁图标 → “连接是安全的” → “证书有效” → 查看“证书路径”。如果只有一层(仅显示你的域名),说明链断了;正常应有两到三层(域名证书 → 中间证书 → 根证书)。
- 不同CA提供的中间证书数量不同:
Let's Encrypt通常只需1个中间证书,DigiCert或Sectigo常需2个 - 不要直接用宝塔自动生成的
cert.pem——它往往只含域名证书,不含中间证书 - 必须手动合并:先贴域名证书内容,换行后紧接中间证书(
chain.pem或ca-bundle.crt),不能颠倒顺序,也不能夹私钥 - 合并后的文件名无所谓,但内容必须是纯PEM格式,且两段之间**不能有空行**
在宝塔中正确粘贴合并后的证书内容
宝塔的SSL设置页没有单独的“中间证书”输入框,所有证书链内容都得塞进“证书(PEM格式)”文本框里。很多人在这里填错位置,导致Nginx压根没加载中间证书。
- 进入【网站】→ 选站点 → 【SSL】→ 【其他证书】→ 【手动添加证书】
- 把合并好的完整证书内容(域名证书 + 中间证书)全部复制,粘贴进【证书(PEM格式)】框
- 私钥内容单独粘贴进【密钥(KEY)】框,**绝对不要混进证书框里**
- 保存后务必点击【重启Nginx】,不是【重载配置】——某些宝塔版本重载不刷新证书链缓存
自动补全证书链功能为何有时失效
宝塔内置的【自动补全证书链】开关看似省事,但它只对Let's Encrypt等少数CA签发的证书有效,且依赖插件能否准确识别CA类型和版本。遇到自购商业证书或旧版CA证书时,这个功能大概率静默失败。
- 勾选【自动补全证书链】后,点【强制更新证书链】,观察右上角是否弹出成功提示
- 点开【证书信息】区域,若仍显示红色警告或“证书链不完整”,说明自动补全没起作用
- 此时别再等插件,直接走手动合并流程——这是最可控的方式
- 该功能不会覆盖你已填的私钥,但会替换掉“证书(PEM格式)”框里的内容,操作前建议先备份原内容
要不要加 ssl_trusted_certificate 指令
ssl_trusted_certificate不是必需项,它只在需要客户端证书验证(如双向HTTPS)或兼容极老客户端时才有用。对普通网站HTTPS访问来说,只要ssl_certificate里包含完整链,这个指令加不加都不影响浏览器信任判断。
如果你在Nginx配置里手动加了这行,又指向了一个不完整或路径错误的文件,反而可能干扰验证逻辑。除非你明确在做mTLS或调试特定兼容问题,否则别碰它。
真正容易被忽略的是:证书文件路径权限。确保合并后的fullchain.pem文件权限为644,且属主是www或root,Nginx worker进程才能读取——权限不对会导致证书加载失败,但错误日志里未必报得清楚。











