証明書の目的を検証する

現在、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 形式に変換します。

証明書の目的を検証する

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

  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