ここに表示されているのは Apigee Edge のドキュメントです。
Go to the
Apigee X のドキュメントに移動します。 info
このドキュメントでは、証明書を Apigee Edge のキーストアまたはトラストストアにアップロードする前に、証明書チェーンを検証する方法について説明します。 このプロセスでは、 OpenSSL ツールキットを使用して証明書 チェーンを検証します。OpenSSL を使用できる環境であれば、どの環境でも適用できます。
始める前に
このドキュメントの手順を行う前に、次のトピックについて理解しておいてください。
- 証明書チェーンについて理解を深めるために、 信頼チェーンをご覧ください。
- OpenSSL ライブラリについて理解を深めるために、 OpenSSL をご覧ください。
- このガイドのコマンドラインの例を使用する場合は、OpenSSL クライアントの最新バージョンをインストールするか、最新バージョンに更新してください。
- 証明書が PEM 形式であることを確認します。証明書が PEM 形式でない場合は、 証明書をサポートされている形式に変換するの手順に沿って PEM 形式に変換します。
チェーン全体の証明書のサブジェクトと発行元を検証する
OpenSSL コマンドを使用して証明書チェーンを検証するには、次のセクションで説明する手順を完了します。
証明書チェーンを分割する
証明書を検証する前に、次の手順で証明書チェーンを個別の 証明書に分割する必要があります。
- OpenSSL クライアントが存在するサーバーにログインします。
- 証明書チェーンを次の証明書に分割します(まだ分割していない場合)。
-
エンティティ証明書:
entity.pem -
中間証明書:
intermediate.pem -
ルート証明書:
root.pem
次の図は、証明書チェーンの例を示しています。
証明書のサブジェクトと発行元を確認する
このセクションでは、証明書のサブジェクトと発行元を取得し、有効な証明書チェーンがあることを確認する方法について説明します。 有効な証明書チェーンがあることを確認します。
-
次の OpenSSL コマンドを実行して、チェーン内の各証明書の
SubjectとIssuerをentityからrootまで取得し、適切な証明書チェーンを形成していることを確認します:openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'ここで、certificate は証明書の名前です。
-
チェーン内の証明書が次のガイドラインに準拠していることを確認します。
-
各証明書の
Subjectは、チェーン内の前の証明書のIssuerと一致します(Entity証明書を除く)。 -
SubjectとIssuerはルート証明書で同じです。
チェーン内の証明書がこれらのガイドラインに準拠している場合、証明書チェーンは完全で有効であると見なされます。
証明書チェーンの検証のサンプル
次の例は、3 つの証明書を含むサンプル証明書チェーンに対する OpenSSL コマンドの出力です。
エンティティ証明書
openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):' Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1 Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com中間証明書
openssl x509 -text -in intermediate.pem | grep -E '(Subject|Issuer):' Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1ルート証明書
openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):' Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign上記の例では、次の点に注意してください。
-
中間証明書の
Subjectは、エンティティ証明書のIssuerと一致します。 -
ルート証明書の
Subjectは、中間証明書のIssuerと一致します。 -
ルート証明書の
SubjectとIssuerは同じです。
上記の例から、サンプル証明書チェーンが有効であることを確認できます。
-
各証明書の
証明書のサブジェクトと発行元のハッシュを確認する
このセクションでは、証明書のサブジェクトと発行元のハッシュを取得し、 有効な証明書チェーンがあることを確認する方法について説明します。
証明書のハッシュ シーケンスを確認することをおすすめします。これにより、証明書の共通名(CN)に不要なスペースや特殊文字が含まれているなどの問題を特定できます。
- 次の OpenSSL コマンドを実行して、チェーン内の各
証明書の
hashシーケンスをentityからrootまで取得し、適切な証明書チェーンを形成していることを確認します。 - チェーン内の証明書が次のガイドラインに準拠していることを確認します。
-
各証明書の
Subjectは、チェーン内の前の 証明書のIssuerと一致します(Entity証明書を除く)。 -
SubjectとIssuerはルート証明書で同じです。 -
中間証明書の
subject hashは、エンティティ 証明書のissuer hashと一致します。 -
ルート証明書の
subject hashは、発行元証明書のissuer hashと一致します。 -
ルート証明書の
subjectとissuer hashは同じです。
openssl x509 -hash -issuer_hash -noout -in certificate
ここで、certificate は証明書の名前です。
チェーン内の証明書がこれらのガイドラインに準拠している場合、証明書チェーンは 完全で有効であると見なされます。
ハッシュ シーケンスによる証明書チェーンの検証のサンプル
次の例は、3 つの証明書を含むサンプル証明書チェーンに対する OpenSSL コマンドの出力です。
openssl x509 -in entity.pem -hash -issuer_hash -noout
c54c66ba #this is subject hash
99bdd351 #this is issuer hash
openssl x509 -in intermediate.pem -hash -issuer_hash -noout
99bdd351
4a6481c9
openssl x509 -in root.pem -hash -issuer_hash -noout
4a6481c9
4a6481c9
上記の例では、次の点に注意してください。
上記の例から、サンプル証明書チェーンが有効であることを確認できます。
証明書の有効期限を確認する
このセクションでは、次の方法を使用して、チェーン内のすべての証明書の有効期限が切れているかどうかを確認する方法について説明します。
- 証明書の開始日と終了日を取得します。
- 有効期限ステータスを取得します。
開始日と終了日
次の OpenSSL コマンドを実行して、チェーン内の各証明書
の開始日と終了日を entity から root まで取得し、チェーン内のすべての証明書
が有効(開始日が今日より前)で、有効期限が切れていないことを確認します。
開始日と終了日による証明書の有効期限の検証のサンプル
openssl x509 -startdate -enddate -noout -in entity.pem notBefore=Feb 6 21:57:21 2020 GMT notAfter=Feb 4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem notBefore=Jun 15 00:00:42 2017 GMT notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem notBefore=Apr 13 10:00:00 2011 GMT notAfter=Apr 13 10:00:00 2022 GMT
有効期限ステータス
次の OpenSSL コマンドを実行して、証明書の有効期限が切れているかどうか、または
次の N seconds で有効期限が切れるかどうかを確認します。これにより、現在のシステム日付を基準とした証明書の有効期限ステータスが返されます。
openssl x509 -checkend <N Seconds> -noout -in certificate
ここで、certificate は証明書の名前です。
checkend オプションによる証明書の有効期限の検証のサンプル
次のコマンドは、0 seconds を使用して、証明書の有効期限が切れているかどうかを確認します。
openssl x509 -checkend 0 -noout -in entity.pem Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem Certificate will not expire
この例では、メッセージ Certificate will not expire は、
証明書の有効期限がまだ切れていないことを示しています。