証明書チェーンを検証する

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

<ph type="x-smartling-placeholder">

このドキュメントでは、証明書を Apigee Edge のキーストアまたはトラストストアに対して行われます。このプロセスは、 証明書を検証する OpenSSL ツールキット OpenSSL が利用可能なすべての環境に適用されます。

始める前に

このドキュメントの手順を使用する前に、次のトピックを理解しておいてください。

チェーン全体に対する証明書のサブジェクトと発行元の検証

OpenSSL コマンドを使用して証明書チェーンを検証するには、次の手順を完了します。 次のセクション:

証明書チェーンの分割

証明書を検証する前に、証明書チェーンを証明書チェーンごとに分割する必要があります。 作成してみましょう。

  1. OpenSSL クライアントが存在するサーバーにログインします。
  2. 証明書チェーンを次の証明書に分割します(まだ分割していない場合)。
    • エンティティ証明書: entity.pem
    • 中間証明書: intermediate.pem
    • ルート証明書: root.pem
    で確認できます。
<ph type="x-smartling-placeholder">

次の図は、証明書チェーンの例を示しています。

証明書チェーンのフロー: ID 証明書から中間証明書からルート証明書へ

証明書のサブジェクトと発行元の確認

このセクションでは、証明書のサブジェクトと発行元を取得し、 有効な証明書チェーンがあることを確認します。

  1. 次の OpenSSL コマンドを実行して、Subject を取得します。 entity からのチェーン内の各証明書に対する Issuer root に追加して、適切な証明書チェーンを形成していることを確認します。
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    ここで、certificate は証明書の名前です。

  2. チェーン内の証明書が次のガイドラインに準拠していることを確認します。 <ph type="x-smartling-placeholder">
      </ph>
    • 各証明書の Subject は、証明書の Issuer と一致します。 チェーン内の先行する証明書(Entity 証明書を除く)。
    • ルート証明書の SubjectIssuer は同じです。

    チェーン内の証明書がこれらのガイドラインに準拠している場合、証明書チェーンは完全かつ有効とみなされます。

    証明書チェーンの検証の例

    次の例は、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
            

    上記の例では、次の点に注意してください。

    • 中間証明書の SubjectIssuer と一致する 含まれます。
    • ルート証明書の Subject が次の Issuer と一致している 中間証明書です。
    • SubjectIssuer はルート証明書内で同じです。

    上記の例から、サンプルの証明書チェーンが有効であることを確認できます。

証明書のサブジェクトと発行者ハッシュの確認

このセクションでは、証明書のサブジェクトと発行元のハッシュを取得し、 有効な証明書チェーンがあることを確認します。

証明書のハッシュ シーケンスは、 不要なスペースがある証明書の共通名(CN)や 使用しないでください。

  1. 次の OpenSSL コマンドを実行して、それぞれの hash シーケンスを取得します。 entity から root へのチェーンで証明書を作成し、それらが 適切な証明書チェーンを作成します。
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    ここで、certificate は証明書の名前です。

  3. チェーン内の証明書が次のガイドラインに準拠していることを確認します。
    • 各証明書の Subject が、前の証明書の Issuer と一致している チェーン内の証明書(Entity 証明書を除く)。
    • ルート証明書の SubjectIssuer は同じです。

    チェーン内の証明書がこれらのガイドラインに準拠している場合、証明書チェーンは 完全かつ有効と見なされます

    ハッシュ シーケンスによる証明書チェーンの検証の例

    次の例は、サンプル証明書チェーンの OpenSSL コマンドの出力です。 3 つの証明書が含まれています。

    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
        

    上記の例では、次の点に注意してください。

    • 中間証明書の subject hash がエンティティの issuer hash と一致する あります。
    • ルート証明書の subject hash が発行元証明書の issuer hash と一致する。
    • subjectissuer hash はルート証明書内で同じです。

    上記の例から、サンプルの証明書チェーンが有効であることを確認できます。

証明書の有効期限の確認

このセクションでは、チェーン内のすべての証明書が証明書に 次の方法で期限切れになります。

  • 証明書の開始日と終了日を取得します。
  • 有効期限のステータスを取得します。

開始日と終了日

次の OpenSSL コマンドを実行して、各証明書の開始日と終了日を取得します。 entity から root へのチェーンで検証し、すべての証明書が チェーンの 1 つが有効(開始日が今日より前)で、有効期限が切れていないこと。

開始日と終了日による証明書の有効期限の検証の例

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 は、 証明書の有効期限が切れていないこと。

<ph type="x-smartling-placeholder">