証明書の目的を検証する

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。
情報

このドキュメントでは、証明書をキーストアまたはトラストストアにアップロードする前に、証明書の目的を検証する方法について説明します。このプロセスは検証に OpenSSL を使用し、OpenSSL が利用可能な環境であれば適用できます。

通常、TLS 証明書は、使用できる 1 つ以上の目的で発行されます。通常、これは証明書に含まれる公開鍵を使用できるオペレーションの数を制限するために行われます。証明書の目的は、次の証明書拡張機能で確認できます。

  • 鍵の用途
  • 鍵の拡張的用途

鍵の用途

鍵用途拡張機能は、証明書に含まれる鍵の目的(暗号化、署名、証明書署名など)を定義します。公開鍵がエンティティ認証に使用される場合、証明書拡張機能には鍵の使用法として「デジタル署名」が含まれている必要があります。

認証局(CA)プロセスを使用して作成された TLS 証明書で使用可能なさまざまな鍵使用法拡張機能は次のとおりです。

  • デジタル署名
  • 否認防止
  • 鍵の暗号化
  • データの暗号化
  • 鍵共有
  • 証明書の署名
  • CRL 署名
  • 暗号化のみ
  • 判読のみ

これらの鍵の用途の拡張機能の詳細については、RFC5280、鍵の用途をご覧ください。

鍵の拡張的用途

この拡張機能は、鍵用途拡張機能で示された基本的な用途に加えて、またはその代わりに、認証された公開鍵を使用できる 1 つ以上の用途を示します。通常、この拡張機能はエンド エンティティ証明書にのみ表示されます。

一般的な拡張キーの用途の拡張機能は次のとおりです。

  • TLS Web server authentication
  • TLS Web client authentication
  • anyExtendedKeyUsage

拡張キーは、クリティカルまたはクリティカルではないのいずれかになります。

  • 拡張機能が重要な場合、証明書は指定された目的でのみ使用する必要があります。証明書が別の目的で使用されている場合、CA のポリシーに違反しています。
  • 拡張機能が重要でない場合、鍵の目的が情報提供を目的としていることを示します。CA が鍵の使用をその目的に限定していることを意味するものではありません。ただし、証明書を使用するアプリケーションでは、証明書が受け入れられるために特定の用途が示されていることが必要になる場合があります。

証明書に鍵使用フィールドと拡張鍵使用フィールドの両方がクリティカルとして含まれている場合、両方のフィールドを個別に処理する必要があります。証明書は、両方の鍵使用値を満たす目的にのみ使用できます。ただし、両方の鍵の使用値を満たす目的がない場合、その証明書はどの目的にも使用してはなりません。

証明書を取得するときは、TLS handshake が失敗する原因となるクライアント証明書またはサーバー証明書の要件を満たす適切な鍵の使用法が定義されていることを確認してください。

目的 キーの使用状況

(必須)

鍵の拡張的用途

(省略可)

Apigee Edge の仮想ホストのキーストアで使用されるサーバー エンティティ証明書
  • デジタル署名
  • 鍵の暗号化または鍵共有
TLS ウェブサーバー認証
Apigee Edge の仮想ホストのトラストストアで使用されるクライアント エンティティ証明書
  • デジタル署名または鍵共有
TLS ウェブ クライアント認証
Apigee Edge のターゲット サーバーのトラストストアで使用されるサーバー エンティティ証明書
  • デジタル署名
  • 鍵の暗号化または鍵共有
TLS ウェブサーバー認証
Apigee Edge のターゲット サーバーのキーストアで使用されるクライアント エンティティ証明書
  • デジタル署名または鍵共有
TLS ウェブ クライアント認証
中間証明書とルート証明書
  • 証明書の署名
  • 証明書失効リスト(CRL)の署名

始める前に

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

  • 証明書チェーンについて理解を深めるために、信頼チェーンをご覧ください。
  • OpenSSL ライブラリについてよく知らない場合は、OpenSSL をご覧ください。
  • 鍵の用途拡張機能と鍵の拡張的用途について詳しくは、RFC5280 をご覧ください。
  • このガイドのコマンドラインの例を使用する場合は、OpenSSL クライアントの最新バージョンをインストールするか、最新バージョンに更新してください。
  • 証明書が PEM 形式であることを確認します。PEM 形式でない場合は、 証明書を PEM 形式に変換します。

証明書の目的を検証する

このセクションでは、証明書の目的を検証するために使用される手順について説明します。

  1. OpenSSL が存在するサーバーにログインします。
  2. 証明書の鍵の使用状況を取得するには、次の OpenSSL コマンドを実行します。
    openssl x509 -noout -ext keyUsage < certificate

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

    出力例

    openssl x509 -noout -ext keyUsage < entity.pem
    X509v3 Key Usage: critical
        Digital Signature, Key Encipherment
    
    openssl x509 -noout -ext keyUsage < intermediate.pem
    X509v3 Key Usage: critical
        Certificate Sign, CRL Sign
  3. 鍵の使用が必須の場合、次のように重要として定義されます。
    openssl x509 -noout -ext keyUsage < intermediate.pem
    X509v3 Key Usage: critical
        Certificate Sign, CRL Sign
  4. 次のコマンドを実行して、証明書の拡張鍵使用法を取得します。拡張鍵用途がクリティカルとして定義されていない場合は、推奨事項であり、必須ではありません。
    openssl x509 -noout -ext extendedKeyUsage < certificate

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

    出力例

    openssl x509 -noout -ext extendedKeyUsage < entity.pem
    X509v3 Extended Key Usage:
        TLS Web Server Authentication, TLS Web Client Authentication
    
    openssl x509 -noout -ext extendedKeyUsage < intermediate.pem
    X509v3 Extended Key Usage:
        TLS Web Server Authentication, TLS Web Client Authentication