如何解决网站SSL证书链不完整

更新时间:
复制为 MD 格式

证书链由根证书、中间证书和SSL证书(服务器证书)组成。如果缺少中间证书或根证书,当您访问业务网站时,浏览器可能会提示建立连接失败或其他错误。您可以按照本文的操作指引来检查证书链是否完整,并处理不完整的证书链。

根证书或中间证书缺失的场景示例

说明

Windows Server 2008R2版本为例。

报错信息

“证书链中的一个或多个中间证书丢失。”

问题原因

Windows server 2008R2版本较老,服务器本身的证书库中缺少可以验证新签发证书的根证书,需要手动向服务器中安装根证书。

步骤一:检查SSL证书链完整性

在服务器上执行以下命令,检查证书链的完整性。该操作可以直接在服务器上执行,无需等待网站接入完成。

  • <Server_IP>:需要替换成服务器IP地址。

  • <Domain_Name>:需要替换成网站域名。

openssl s_client -connect <Server_IP>:443 -servername <Domain_Name>

一般证书文件的内容格式如以下示例所示,其中前半部分(①)是域名证书,后半部分(②)是中间证书。 如果只有域名证书,没有中间证书,表示证书链不完整。

verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
verify return:1
depth=0 C = CN, ST = Beijing, O = "xxx Technology Co., Ltd", OU = service operation department, CN = www.xxx
verify return:1
---
Certificate chain
 0 s:C = CN, ST = Beijing, O = "xxx Technology Co., Ltd", OU = service operation department, CN = www.xxx
   i:C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
 1 s:C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
   i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIHJjCCBg6gAwIBAgIQAQV1J9uhA/WtTyocZe9DYTANBgkqhkiG9w0BAQsFADBN
xxx
-----END CERTIFICATE-----

如果域名证书和中间证书在同一个文件,需确保域名证书(①)和中间证书(②)之间不能包含空格或回车字符。

-----BEGIN CERTIFICATE-----
MIIJBzCCB++gAwIBAgIJAJGNv9rVgB8rMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYD
......
6616mkcOi0SU770=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEODCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
......
LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB
-----END CERTIFICATE-----

步骤二:重新下载证书并配置证书

相关文档