憑證鏈結由根憑證、中間認證和SSL認證(伺服器憑證)組成。如果缺少中間認證或根憑證,當您訪問業務網站時,瀏覽器可能會提示建立串連失敗或其他錯誤。您可以按照本文的操作指引來檢查憑證鏈結是否完整,並處理不完整的憑證鏈結。
步驟一:檢查SSL憑證鏈結完整性
在伺服器上執行以下命令,檢查憑證鏈結的完整性。該操作可以直接在伺服器上執行,無需等待網站接入完成。
<Server_IP>:替換為伺服器的實際IP地址。<Domain_Name>:替換為網站的實際網域名稱。
openssl s_client -connect <Server_IP>:443 -servername <Domain_Name>openssl s_client -connect <Server_IP>:443 -servername <Domain_Name>命令的輸出中,Certificate chain 部分列出憑證鏈結的層級,depth 表示認證層級(depth 0 為網域名稱認證,depth 1 及以上為中間認證或根憑證),Verify return code 表示憑證鏈結驗證結果。可通過對比以下兩種輸出樣本判斷憑證鏈結是否完整。
完整憑證鏈結輸出樣本(憑證鏈結完整,Verify return code 為 0):
depth=2 O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
verify return:1
depth=0 C = CN, CN = www.example.com
verify return:1
CONNECTED(00000003)
---
Certificate chain
0 s:C = CN, CN = www.example.com
i:C = BE, CN = GlobalSign RSA OV SSL CA 2018
1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
i:O = GlobalSign, CN = GlobalSign
---
...
Verify return code: 0 (ok)不完整憑證鏈結輸出樣本(缺少中間認證,僅返回網域名稱認證,Verify return code 為 21):
depth=0 C = CN, CN = www.example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
---
Certificate chain
0 s:C = CN, CN = www.example.com
i:C = BE, CN = GlobalSign RSA OV SSL CA 2018
---
...
Verify return code: 21 (unable to verify the first certificate)對比兩組輸出:完整憑證鏈結的 Certificate chain 中包含多條 depth(網域名稱認證之外還有中間認證、根憑證),且 Verify return code 為 0;不完整憑證鏈結的 Certificate chain 中僅有 depth 0(網域名稱認證),同時出現 verify error(例如錯誤碼 20、21),Verify return code 也非 0。因此,如果命令輸出中僅包含網域名稱認證(depth 0)而缺少中間認證(depth 1 及以上),或 Verify return code 不為 0,則說明憑證鏈結不完整。
---
Certificate chain
0 s:C = CN, ST = Beijing, O = "xxx Technology Co., Ltd", OU = service operation department, CN = www.xxx.com
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
---如果網域名稱認證和中間認證存放在同一檔案中,請確保兩者之間不包含任何空格或斷行符號字元。
-----BEGIN CERTIFICATE-----
MIIJBzCCB++gAwIBAgIJAJGNv9rVgB8rMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYD
......
6616mkcOi0SU770=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEODCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
......
LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB
-----END CERTIFICATE-----步驟二:重新下載認證並配置認證
部署認證到Web伺服器。具體操作,請參見在伺服器上安裝認證。
部署認證到阿里雲產品:通過數位憑證管理服務控制台的部署功能,將已簽發的認證一鍵應用到指定的阿里雲資源上。詳情請參見部署認證到阿里雲產品。