証明書チェーンは、ルート証明書、中間証明書、および SSL 証明書 (サーバー証明書) で構成されます。中間証明書またはルート証明書が欠落している場合、Web サイトにアクセスすると、ブラウザーに接続失敗やその他のエラーが表示されることがあります。このトピックの手順に従って、証明書チェーンが完全であるかどうかを確認し、不完全な証明書チェーンを解決します。
ステップ 1: SSL 証明書チェーンの完全性の確認
サーバーで次のコマンドを実行して、証明書チェーンの完全性を確認します。この操作は、Web サイトの公開前にサーバー上で直接実行できます。
<Server_IP>:サーバーの実際の IP アドレスに置き換えます。<Domain_Name>:Web サイトの実際のドメイン名に置き換えます。
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 は証明書チェーンの検証結果を示します。次の 2 つのサンプル出力を比較して、証明書チェーンが完全かどうかを判断します。
完全な証明書チェーンの出力例(証明書チェーンが完全で、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)2 つの出力を比較すると、完全な証明書チェーンの場合、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
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-----ステップ 2: 証明書の再ダウンロードと設定
証明書を Web サーバーにデプロイします。詳細については、「サーバーに証明書をインストールする」をご参照ください。
Alibaba Cloud サービスへの証明書のデプロイ: Certificate Management Service コンソールのデプロイ機能を使用して、発行された証明書をワンクリックで特定の Alibaba Cloud リソースに適用します。 詳細については、「Alibaba Cloud サービスに証明書をデプロイする」をご参照ください。