证书链不完整:缺少中级证书的修复方法
· CSR.plus 团队

- •链错误几乎总是意味着服务器只发送叶子证书,而没有发送浏览器验证所需的中级证书。
- •修复方法是一个拼接文件:叶子 + 中级,顺序正确。
- •用与访客相同的 openssl 命令验证修复结果。
链为什么会断裂
浏览器信任证书是因为信任其根证书。您的叶子证书由不在浏览器信任库中的中级证书签名,因此服务器必须在握手中发送它。如果服务器配置只指向叶子证书,或拼接文件顺序错误,不缓存中级证书的客户端就会报"链不完整"、"unable to get local issuer certificate"或 NET::ERR_CERT_AUTHORITY_INVALID。
在 Nginx 和 Apache 上如何修复
从您的 CA(或证书 Authority Information Access 扩展中的中级端点)下载完整链包。拼接:cat yourdomain.com.crt intermediate.crt root.crt > fullchain.crt——叶子在前,中级按顺序,根在最后。Nginx 将 ssl_certificate 指向 fullchain 文件;Apache 设置 SSLCertificateChainFile(或把链包含进 SSLCertificateFile)。然后重载。
验证修复结果
运行 openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts 2>&1 | grep -A1 "Certificate chain"。您应该看到叶子证书后跟中级证书。openssl verify -CAfile root.pem fullchain.crt 应输出 "fullchain.crt: OK"。再用干净的浏览器配置文件和外部链检查工具复测。
FAQ
为什么有的浏览器能访问、有的不能?
近期从 CT 日志或缓存获取过中级证书的客户端可以不依赖它完成验证;其他客户端则不行。修复方法相同:发送完整链。
CDN 会掩盖这个问题吗?
不会——CDN 用自己的证书终止 TLS。如果您只上传叶子证书到 CDN,它会把同样的断链转发给访客。
UptimeRobot
免费监控你的 SSL 与在线状态
UptimeRobot 全天候监视你的证书与端点——免费方案含 50 个监控。
联盟链接——你无需多付任何费用,我们可能获得佣金。
免费 SSL/TLS 工具
数秒内验证并检查你的证书。