在nginx server块中显式配置拼接好的fullchain.pem证书链是最可靠方案:先域名证书、再中间证书(勿含根证书),并添加ssl_certificate和ssl_trusted_certificate两行,重启nginx后通过openssl或ssl labs验证链完整性。

直接在 Nginx 的 server 块中补全证书链,是最可靠、最可控的解决方式。它绕过面板自动逻辑,确保每次 TLS 握手都主动发送完整信任路径,浏览器不再因缺失中间证书而报“连接不安全”或“证书链不完整”。
确认并准备完整的证书文件
证书链必须按顺序拼接为单个 PEM 文件:先放你的域名证书,紧接着换行粘贴中间证书(CA Bundle),不能插入空行、额外字符,也不包含私钥。可命名为 fullchain.pem,存放在如 /www/wwwroot/yourdomain/ 这类路径下。
- 若原证书文件里只有域名证书,需从证书颁发机构官网下载对应 CA Bundle 补齐(例如 DigiCert、Sectigo、Let’s Encrypt 均提供)
- 用文本编辑器打开检查:应看到至少两个
-----BEGIN CERTIFICATE-----区块,第一个是你的域名证书,第二个是中间证书 - 不要把根证书加进去——浏览器不接受根证书上传,只认中间证书
在 Nginx server 块中显式声明证书链
进入宝塔面板【网站】→ 对应站点 → 【配置文件】,找到启用 HTTPS 的 server 块,在已有 ssl_certificate 和 ssl_certificate_key 行之后,添加以下两行:
-
ssl_certificate /www/wwwroot/yourdomain/fullchain.pem;(覆盖原路径,确保此处是拼接后的完整链) -
ssl_trusted_certificate /www/wwwroot/yourdomain/fullchain.pem;(增强旧客户端兼容性,尤其对 iOS Safari 和部分企业监控系统有效)
保存后务必重启 Nginx,否则配置不生效。
验证是否真正修复
别只看浏览器图标——用命令行快速确认链是否完整:
- 在服务器执行:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text | grep "Subject:",应看到至少两段输出:一段是你的域名证书,一段是中间证书 - 访问 SSL Labs 扫描你的域名,结果页中 “Certification Paths” 应显示绿色 ✔️,且注明 “Chain issues: None”
- 特别注意移动端:iOS 17+ 和 Android Chrome 对链完整性更严格,若仅电脑正常而手机报错,基本可断定是链未传全
不复杂但容易忽略。











