Application Load Balancer の TLS による相互認証 - Elastic Load Balancing

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Application Load Balancer の TLS による相互認証

相互 TLS 認証はトランスポート層セキュリティ (TLS) の一種です。従来の TLS では、サーバーとクライアント間の安全な通信を確立するため、サーバーは ID をクライアントに提供する必要があります。相互 TLS では、ロードバランサーが TLS をネゴシエートしながらクライアントとサーバー間の相互認証をネゴシエートします。Application Load Balancer で相互 TLS を使用すると、認証管理が簡素化され、アプリケーションの負荷が軽減されます。

Application Load Balancer で相互 TLS を使用することにより、ロードバランサーはクライアント認証を管理し、信頼できるクライアントのみがバックエンドアプリケーションと通信できるようにします。この機能を使用すると、Application Load Balancer はサードパーティの認証局 (CA) からの証明書を使用するか、(PCA) AWS Private Certificate Authority (オプションで失効チェック付き) を使用してクライアントを認証します。Application Load Balancer は、アプリケーションが認証に使用できるクライアント証明書情報をバックエンドに渡します。Application Load Balancer で相互 TLS を使用することにより、確立されたライブラリを使用する証明書ベースのエンティティに対して、組み込みのスケーラブルなマネージド認証を取得できます。

アプリケーションロードバランサー用相互 TLS には、X.509v3 クライアント証明書を検証するための次の 2 つのオプションがあります。

:X.509v1 クライアント証明書はサポートされていません。

  • 相互 TLS パススルー:相互 TLS パススルーモードを使用すると、Application Load Balancer は HTTP ヘッダーを使用してクライアント証明書チェーン全体をターゲットに送信します。次に、クライアント証明書チェーンを使用することで、対応する認証および承認ロジックをアプリケーションに実装できます。

  • 相互 TLS 検証:相互 TLS 検証モードを使用すると、ロードバランサーが TLS 接続をネゴシエートするときに、Application Load Balancer はクライアントの X.509 クライアント証明書認証を実行します。

Application Load Balancer でパススルーを使用して相互 TLS を使い始めるには、クライアントからの証明書を受け入れるようにリスナーを設定するだけで済みます。検証機能付きの相互 TLS を使用するには、次のことを行う必要があります。

  • 新しいトラストストアリソースを作成します。

  • 認証局 (CA) バンドルをアップロードし、オプションで失効リストをアップロードします。

  • クライアント証明書を検証するように設定されたリスナーにトラストストアをアタッチします。

Application Load Balancer で相互 TLS step-by-step 検証モードを設定する手順については、を参照してください。Application Load Balancer での相互 TLS の設定

Application Load Balancer で相互 TLS を設定する前に

Application Load Balancer で相互 TLS の設定を開始する前に、次の点に注意してください。

クォータ

アプリケーションロードバランサーには、アカウント内で使用されているトラストストア、CA 証明書、証明書失効リストの数に関連する特定の制限があります。 AWS

詳細については、「アプリケーションロードバランサーのクォータ」を参照してください。

証明書の要件

アプリケーションロードバランサーは、相互 TLS 認証で使用される証明書について以下をサポートします。

  • サポートされている証明書:X.509v3

  • サポートされているパブリックキー:RSA 2K — 8K または ECDSA secp256r1、secp384r1、secp521r1

  • サポートされている署名アルゴリズム:RSA/SHA256 では SHA256、384、512、RSA/SHA256 で 384、512 は EC/SHA256,384,512 ハッシュで MGF1 では RSASSA-PSS

CA 証明書

認証局 (CA) バンドルには以下が適用されます。

  • アプリケーションロードバランサーは、各認証局 (CA) 証明書バンドルをバッチとしてアップロードします。アプリケーションロードバランサーは個別の証明書のアップロードをサポートしていません。新しい証明書を追加する必要がある場合は、証明書バンドルファイルをアップロードする必要があります。

  • CA 証明書バンドルを置き換えるには、ModifyTrustStoreAPI を使用します。

パススルーの証明書注文

相互 TLS パススルーを使用すると、Application Load Balancer はヘッダーを挿入して、クライアントの証明書チェーンをバックエンドターゲットに提示します。表示順序はリーフ証明書で始まり、ルート証明書で終わります。

セッション再開

Application Load Balancer で相互 TLS パススルーモードまたは検証モードを使用している間は、セッション再開はサポートされません。

HTTP ヘッダー

アプリケーションロードバランサーは、相互 X-Amzn-Mtls TLS を使用してクライアント接続をネゴシエートするときに、ヘッダーを使用して証明書情報を送信します。詳細とヘッダーの例については、を参照してください。HTTP ヘッダーと相互 TLS

HTTP ヘッダーと相互 TLS

このセクションでは、アプリケーションロードバランサーが相互 TLS を使用してクライアントと接続をネゴシエートする際に証明書情報を送信するために使用する HTTP ヘッダーについて説明します。Application Load Balancer X-Amzn-Mtls が使用する特定のヘッダーは、指定した相互 TLS モード (パススルーモードまたは検証モード) によって異なります。

アプリケーションロードバランサーがサポートするその他の HTTP ヘッダーについては、を参照してください。HTTP ヘッダーと Application Load Balancer

パススルーモードの HTTP ヘッダー

パススルーモードの相互 TLS では、アプリケーションロードバランサーは次のヘッダーを使用します。

このヘッダーには、接続で表示されるクライアント証明書チェーン全体の URL エンコードされた PEM 形式が、安全な文字とともに含まれています。+=/

ヘッダーの内容の例:

X-Amzn-Mtls-Clientcert: -----BEGIN%20CERTIFICATE-----%0AMIID<...reduced...>do0g%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIID1<...reduced...>3eZlyKA%3D%3D%0A-----END%20CERTIFICATE-----%0A

検証モードの HTTP ヘッダー

検証モードの相互 TLS では、アプリケーションロードバランサーは次のヘッダーを使用します。

このヘッダーには、リーフ証明書のシリアル番号が 16 進数で表現されています。

ヘッダーの内容の例:

X-Amzn-Mtls-Clientcert-Serial-Number: 03A5B1

このヘッダーには、発行者の識別名 (DN) を表す RFC2253 文字列が含まれています。

ヘッダーの内容の例:

X-Amzn-Mtls-Clientcert-Issuer: CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US

このヘッダーには、サブジェクトの識別名 (DN) を表す RFC2253 文字列が含まれています。

ヘッダーの内容の例:

X-Amzn-Mtls-Clientcert-Subject: CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US

このヘッダーには ISO8601 形式のと日付が含まれています。notBefore notAfter

ヘッダーの内容の例:

X-Amzn-Mtls-Clientcert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z

このヘッダーには、URL でエンコードされた PEM 形式のリーフ証明書が、安全な文字とともに含まれています。+=/

ヘッダーの内容の例:

X-Amzn-Mtls-Clientcert-Leaf: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

Application Load Balancer での相互 TLS の設定

このセクションには、アプリケーションロードバランサーの認証用に相互 TLS 検証モードを設定する手順が含まれています。

相互 TLS パススルーモードを使用するには、クライアントからの証明書を受け入れるようにリスナーを設定するだけで済みます。相互 TLS パススルーを使用すると、Application Load Balancer は HTTP ヘッダーを使用してクライアント証明書チェーン全体をターゲットに送信します。これにより、対応する認証および承認ロジックをアプリケーションに実装できます。詳細については、 のCreate an HTTPS Listener for Your Application Load Balancerを参照してください。

検証モードで相互 TLS を使用すると、ロードバランサーが TLS 接続をネゴシエートするときに、Application Load Balancer はクライアントの X.509 クライアント証明書認証を実行します。

相互 TLS 検証モードを利用するには、以下を実行します。

  • 新しいトラストストアリソースを作成します。

  • 認証局 (CA) バンドルをアップロードし、オプションで失効リストをアップロードします。

  • クライアント証明書を検証するように設定されたリスナーにトラストストアをアタッチします。

このセクションの手順に従って、のApplication Load Balancer で相互 TLS 検証モードを設定します。 AWS Management Consoleコンソールの代わりに API オペレーションを使用して相互 TLS を設定するには、『Application Load Balancer API リファレンスガイド』を参照してください。

トラストストアを作成する

トラストストアを作成するには、Application Load Balancer を作成するとき、セキュアリスナーを作成するとき、そしてトラストストアコンソールを使用する方法の 3 つがあります。ロードバランサーまたはリスナーの作成時にトラストストアを追加すると、トラストストアは自動的に新しいリスナーに関連付けられます。Trust Store コンソールを使用してトラストストアを作成する場合は、自分でそれをリスナーに関連付ける必要があります。

このセクションでは、Trust Store コンソールを使用してトラストストアを作成する方法について説明しますが、Application Load Balancer またはリスナーを作成するときの手順は同じです。詳細については、「ロードバランサーとリスナーの設定」と「HTTPS リスナーの追加」を参照してください。

前提条件:
  • トラストストアを作成するには、認証局 (CA) からの証明書バンドルが必要です。

コンソールを使用してトラストストアを作成するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. [トラストストアを作成] を選択します。

  4. トラストストア設定

    1. [トラストストア名] に、トラストストアの名前を入力します。

    2. 認証局バンドルには、トラストストアで使用させたいCA証明書バンドルへのAmazon S3 パスを入力します。

      オプション:Object version を使用して CA 証明書バンドルの以前のバージョンを選択します。それ以外の場合は、現在のバージョンが使用されます。

  5. 失効の場合は、オプションで証明書失効リストをトラストストアに追加できます

    1. [証明書失効リスト] に、トラストストアで使用させたい証明書失効リストへの Amazon S3 パスを入力します。

      オプション:オブジェクトバージョン」を使用して、証明書失効リストの以前のバージョンを選択します。それ以外の場合は、現在のバージョンが使用されます。

  6. トラストストアタグの場合、オプションで最大 50 個のタグを入力してトラストストアに適用できます。

  7. [トラストストアを作成] を選択します。

トラストストアを関連付ける

トラストストアを作成したら、Application Load Balancer がトラストストアの使用を開始する前に、トラストストアをリスナーに関連付ける必要があります。各セキュアリスナーに関連付けることができるトラストストアは 1 つだけですが、1 つのトラストストアを複数のリスナーに関連付けることができます。

このセクションでは、トラストストアを既存のリスナーに関連付ける方法について説明します。または、Application Load Balancer またはリスナーの作成時にトラストストアを関連付けることもできます。詳細については、「ロードバランサーとリスナーの設定」と「HTTPS リスナーの追加」を参照してください。

コンソールを使用してトラストストアを関連付けるには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択すると、その詳細ページが表示されます。

  4. リスナーとルール」タブで、「プロトコル:ポート」列のリンクを選択し、セキュアリスナーの詳細ページを開きます。

  5. セキュリティ」タブで、「セキュア・リスナー設定の編集」を選択します。

  6. (オプション) 相互 TLS が有効になっていない場合は、[クライアント証明書の処理] で [相互認証 (mTLS)] を選択し、[トラストストアで検証] を選択します。

  7. [トラストストア] で、作成したトラストストアを選択します。

  8. [変更を保存]をクリックします。

トラストストアの詳細を表示します。

CA 証明書バンドル

CA 証明書バンドルはトラストストアの必須コンポーネントです。認証局によって検証された、信頼できるルート証明書と中間証明書の集まりです。これらの検証済み証明書は、提示された証明書がロードバランサーが所有していることをクライアントが信頼できることを保証します。

現在の CA 証明書バンドルの内容は、トラストストアでいつでも表示できます。

CA 証明書バンドルを表示します。
コンソールを使用して CA 証明書バンドルを表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. トラストストアを選択すると、詳細ページが表示されます。

  4. アクション」を選択し、「CA バンドルを取得」を選択します。

  5. [リンクを共有] または [ダウンロード] を選択します。

証明書失効リスト

オプションで、トラストストアの証明書失効リストを作成できます。失効リストは認証局によって公開され、失効した証明書のデータが含まれます。

証明書失効リストをトラストストアに追加すると、失効 ID が割り当てられます。失効 ID は、トラストストアに失効リストが追加されるたびに増加し、変更することはできません。証明書失効リストをトラストストアから削除すると、その失効 ID も削除され、トラストストアの存続期間中は再利用されません。

証明書失効リストを表示する
コンソールを使用して失効リストを表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. トラストストアを選択すると、詳細ページが表示されます。

  4. 証明書失効リスト」タブで「アクション」を選択し、「失効リストを取得」を選択します。

  5. [リンクを共有] または [ダウンロード] を選択します。

トラストストアを変更します。

トラストストアには一度に 1 つの CA 証明書バンドルしか保存できませんが、トラストストアの作成後はいつでも CA 証明書バンドルを置き換えることができます。

CA 証明書バンドルを置き換えてください。

コンソールを使用して CA 証明書バンドルを置き換えるには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. トラストストアを選択すると、詳細ページが表示されます。

  4. アクション」を選択し、「CA バンドルを置き換える」を選択します。

  5. CA バンドルの交換」ページの「認証局バンドル」で、目的の CA バンドルの Amazon S3 ロケーションを入力します。

  6. (オプション) [オブジェクトバージョン] を使用して、証明書失効リストの以前のバージョンを選択します。それ以外の場合は、現在のバージョンが使用されます。

  7. CA バンドルの置換」を選択します。

証明書失効リストを追加します。

コンソールを使用して失効リストを追加するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. トラストストアを選択すると、その詳細ページが表示されます。

  4. 証明書失効リスト」タブで「アクション」を選択し、「失効リストを追加」を選択します。

  5. [失効リストの追加] ページの [証明書失効リスト] で、目的の証明書失効リストの Amazon S3 の場所を入力します。

  6. (オプション) [オブジェクトバージョン] を使用して、証明書失効リストの以前のバージョンを選択します。それ以外の場合は、現在のバージョンが使用されます。

  7. [失効リストを追加] を選択します。

証明書失効リストを削除する。

コンソールを使用して失効リストを削除するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. トラストストアを選択すると、詳細ページが表示されます。

  4. 証明書失効リスト」タブで「アクション」を選択し、「失効リストを削除」を選択します。

  5. と入力して削除を確定します。confirm

  6. [削除] を選択します。

トラストストアを削除します。

使用しなくなったトラストストアは削除できます。

注:現在リスナーに関連付けられているトラストストアは削除できません。

コンソールを使用してトラストストアを削除するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [トラストストア] を選択します。

  3. トラストストアを選択すると、その詳細ページが表示されます。

  4. [アクション] を選択し、[トラストストアを削除] を選択します。

  5. confirmと入力して削除を確定します。

  6. [削除] を選択します。

アプリケーションロードバランサーの接続ログ

Elastic Load Balancing は、アプリケーションロードバランサーに送信されたリクエストに関する属性をキャプチャする接続ログを提供します。接続ログには、クライアント IP アドレスとポート、クライアント証明書情報、接続結果、使用されている TLS 暗号などの情報が含まれます。これらの接続ログは、リクエストパターンやその他の傾向を確認するために使用できます。

接続ログについて詳しくは、を参照してください。Application Load Balancer の接続ログ