即使网站的叶证书有效且未过期,SSL 证书链错误仍可能导致该网站被视为不可信。由于浏览器、API 客户端和监控工具构建证书信任路径的方式各不相同,它们可能会报告不同的错误。中间证书缺失是常见原因之一,但并非唯一原因。.
本指南介绍了证书链的工作原理、如何使用 OpenSSL 检查运行中的服务器,以及如何在不削弱 TLS 验证的情况下修正 Apache、Nginx 和 Cloudflare 的配置。.

什么是 SSL 证书链?
证书链通过一个或多个中间证书,将您网站的叶证书与受信任的根证书颁发机构连接起来。服务器通常会在 TLS 握手过程中出示其叶证书和所需的中间证书。随后,客户端会验证签名、主机名覆盖范围、有效期以及可信度。.
根证书通常由客户端的信任存储库提供,而非由网站发送。如果仅安装叶证书,可能会导致客户端无法建立受信任的证书路径。.
常见的证书链错误信息
常见的提示信息包括“无法获取本地颁发者证书”、“无法验证第一个证书”以及“证书验证失败”。有些浏览器则会显示一条通用的连接警告。.
这些错误信息可能表明存在以下情况:缺少中间证书、客户端信任存储库过时、私有证书颁发机构不受信任,或者服务器配置有误。证书过期或主机名不匹配属于另一类验证问题,需要单独解决。.
步骤 1:检查服务器提供的证书
在受信任的终端上,运行:
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
请将主机名替换为您的域名。该 -服务器名称 该选项提供服务器名称指示(Server Name Indication)功能,有助于服务器选择正确的虚拟主机证书。.
检查显示的证书链、主体、签发者、有效期以及验证结果。请注意,OpenSSL 的验证依赖于本地机器的信任存储库。仅凭握手成功并不能证明该证书链是可信的。.
步骤 2:识别缺失的中间证书
将叶证书的签发者与证书链中下一张证书的主题进行比对。重复此过程,直到证书链到达目标客户端所信任的签发者为止。.
如果缺少中间证书,请从您的证书颁发机构(CA)的官方存储库或控制面板中下载正确的证书。请避免从第三方网站下载随机的证书包。.
有些客户端会自动补全缺失的中间结果,而有些则不会。正是这种差异,解释了为什么某个网站在某个浏览器中可以正常运行,但在API客户端或命令行工具中却无法正常工作。.
步骤 3:构建正确的完整链文件
对于基于 PEM 的服务器配置,请先创建一个链文件,其中包含根证书,然后按正确顺序依次添加其中间证书。.
cat server.crt intermediate.crt > fullchain.pem
请使用证书颁发机构提供的实际证书文件名。请勿将私钥包含在此公钥证书包中。通常无需包含根证书。.
请通过设置严格的权限来单独保护私钥。在更改生产环境配置之前,请确认叶证书与该密钥匹配。.
第 4 步:在 Nginx 中修复证书链
在相应的 HTTPS 服务器块中,将 ssl_certificate 到完整的链文件中,并 ssl_certificate_key 与之对应的私钥:
ssl_certificate /etc/ssl/example/fullchain.pem;
ssl_certificate_key /etc/ssl/example/privkey.pem;
使用以下命令验证配置: sudo nginx -t 并仅在测试通过后才重新加载。然后重复进行外部 OpenSSL 测试。请检查每个主机名和负载均衡端点,而不仅仅是主域名。.
第 5 步:修复 Apache SSL 证书配置
在当前的 Apache 安装环境中,请执行以下配置: SSLCertificateFile 包含以受支持的证书链格式存储的根证书和中间证书,以及相应的密钥:
SSLCertificateFile /etc/ssl/example/fullchain.pem
SSLCertificateKeyFile /etc/ssl/example/privkey.pem
旧版 Apache 可能使用独立的 chain 指令。请遵循您已安装版本的文档,而不是照搬过时的配置示例。.
运行 sudo apachectl configtest, 在测试成功后重新加载该服务,并再次验证公共端点。.
第 6 步:区分服务器错误与客户端信任失败
如果服务器提供了完整的证书链,但仍有某个客户端无法验证,请检查该客户端的操作系统、CA 证书包、应用程序运行时以及系统时间。旧版的 Java 环境或容器镜像可能缺少较新的受信任根证书。.
切勿在生产环境代码中为了图省事而禁用证书验证。应更新客户端信任存储库,或配置正确的受信任证书颁发机构。.
对于自签名或内部证书,请通过受管信任策略分发受信任的组织根证书。面向公众的网站通常需要一份被主流客户端信任的证书。.
第 7 步:检查 Cloudflare 和源站证书
Cloudflare 引入了独立的“访客到边缘”和“边缘到源服务器”TLS 连接。Cloudflare 源服务器 CA 证书专用于 Cloudflare 的源服务器验证,通常不会被直接连接到源服务器的浏览器所信任。.
在“完全(严格)”模式下,Cloudflare 会验证源站证书。源站证书无效可能会导致 Error 526 错误。在更换证书或更改 SSL 模式之前,请先测试连接是否正常。.
如需进一步强化服务器安全性,请参阅我们的 非托管服务器安全检查清单.
第 8 步:防止续期过程中的链式错误
在支持的情况下,自动执行证书续期,同时需验证部署操作是否更新了所提供的完整证书链,并重新加载了正确的服务。监控证书到期日期、证书变更情况,以及来自多个客户端的 HTTPS 验证结果。.
分别测试 staging 和 production 环境。我们的 WordPress 测试站指南 介绍了在发布前验证网站更改的更安全的方法。.
什么时候应该比较主机或VPS服务商?
大多数证书链故障只需修正文件或信任设置即可解决,无需购买新的基础设施。不过,如果证书管控措施不足、续期流程不可靠,或者缺乏管理权限,则有理由考虑评估另一种托管模式。.
SiteGround 以及 ChemiCloud 对于正在比较托管网站运营方案的 WordPress 站长而言,这些内容具有参考价值。. KnownHost 以及 ScalaHosting 为希望在获得技术支持的同时拥有更多控制权的管理员提供托管型VPS方案。. 卡马特拉 为自行管理 TLS 堆栈的团队提供可配置的云服务器。.
比较证书自动化、支持范围、根访问权限、备份以及部署灵活性。我们的 托管型与非托管型VPS指南 明确了运营责任,而 托管云主机对比 为云采购决策提供支持。.
如果 HTTPS 问题伴随着持续的后端延迟,请使用我们的 TTFB 过高故障排除指南 为了将性能与证书信任分开进行调查。.
常见问题解答
我应该在服务器上安装根证书吗?
通常不是。服务器通常会发送叶证书和中间证书;客户端则维护受信任的根证书存储。.
为什么 SSL 在 Chrome 中能正常工作,但在 Curl 中却无法正常工作?
客户端可能使用不同的受信任存储库或采用不同的中间证书发现机制。请比较它们的证书路径和软件版本。.
续签证书能否解决中间证书缺失的问题?
不一定。服务器在续期后必须部署正确的链文件。.
最终裁决
通过识别已提供的证书、安装缺失的中间证书、验证完整的证书链以及检查客户端信任设置,来修复 SSL 证书链错误。安全的 HTTPS 取决于正确的部署和持续的验证,而不仅仅在于购买更昂贵的服务器。.





