現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください。 情報
このドキュメントでは、Apigee Edge のキーストアまたはトラストストアに証明書をアップロードする前に、証明書チェーンを検証する方法について説明します。このプロセスは、OpenSSL ツールキットを使用して証明書チェーンを検証するもので、OpenSSL が利用可能なすべての環境に適用できます。
始める前に
このドキュメントの手順を行う前に、次のトピックを理解しておいてください。
- 証明書チェーンについて詳しくは、信頼チェーンをご覧ください。
- OpenSSL ライブラリを使い慣れていない方は、OpenSSL をご確認ください。
- このガイドのコマンドラインの例を使用する場合は、OpenSSL クライアントの最新バージョンをインストールするか、最新バージョンに更新してください。
- 証明書が PEM 形式であることを確認します。証明書が PEM 形式でない場合は、 サポートされている形式への証明書の変換の手順に沿って、PEM 形式に変換してください。
チェーン全体の証明書のサブジェクトと発行元を検証する
OpenSSL コマンドを使用して証明書チェーンを検証するには、次のセクションで説明する手順を完了します。
証明書チェーンの分割
証明書を検証する前に、次の手順で証明書チェーンを別々の証明書に分割する必要があります。
- OpenSSL クライアントが存在するサーバーにログインします。
- 証明書チェーンを次の証明書に分割します(まだ行っていない場合)。
-
エンティティ証明書:
entity.pem
-
中間証明書:
intermediate.pem
-
ルート証明書:
root.pem
次の図は、証明書チェーンの例を示しています。
証明書のサブジェクトと発行元の確認
このセクションでは、証明書のサブジェクトと発行元を取得し、有効な証明書チェーンがあることを確認する方法について説明します。
-
次の OpenSSL コマンドを実行して、
entity
からroot
までのチェーン内の各証明書のSubject
とIssuer
を取得し、正しい証明書チェーンを形成していることを確認します。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 コマンドを実行して、
entity
からroot
までのチェーン内の各証明書のhash
シーケンスを取得し、正しい証明書チェーンを形成していることを確認します。 - チェーン内の証明書が次のガイドラインを遵守していることを確認します。
-
各証明書の
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 は証明書の名前です。
チェックエンド オプションを使用した証明書の有効期限検証の例
次のコマンドは、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
は、証明書がまだ有効期限が切れていないことを示しています。