Elastic Load Balancing
Application Load Balancer

Application Load Balancer 用の HTTPS リスナーを作成する

リスナーとは接続リクエストをチェックするプロセスです。ロードバランサーを作成するときにリスナーを定義し、いつでもロードバランサーにリスナーを追加できます。

暗号化された接続を使用する HTTPS リスナーを作成できます (SSL オフロードとも呼ばれます)。この機能によって、ロードバランサーと SSL あるいは TLS セッションを開始したクライアント間のトラフィックを暗号化できます。

このページの情報は、ロードバランサー用の HTTPS リスナーを作成するのに役立ちます。ロードバランサーに HTTP リスナーを追加するには、「Application Load Balancer 用の HTTP リスナーを作成する」を参照してください。

SSL 証明書

HTTPS リスナーを使用するには、ロードバランサーに SSL/TLS サーバー証明書を少なくとも 1 つデプロイする必要があります。ターゲットにリクエストを送信する前に、ロードバランサーはこの証明書を使用して接続を終了し、クライアントからのリクエストを復号します。

ロードバランサーには X.509 証明書 (SSL/TLS サーバー証明書) が必要です。証明書とは、認証機関 (CA) によって発行された識別用デジタル形式です。証明書には、認識用情報、有効期間、パブリックキー、シリアル番号と発行者のデジタル署名が含まれます。

ロードバランサーで使用する証明書を作成するときに、ドメイン名を指定する必要があります。

AWS Certificate Manager (ACM) を使用して、ロードバランサーの証明書を作成することをお勧めします。ACM は、Elastic Load Balancing と統合して、ロードバランサーに証明書をデプロイできます。詳細については、AWS Certificate Manager ユーザーガイド を参照してください。

重要

ACM は 4096 キー長および EC 証明書を使用する RSA 証明書をサポートします。ただし、これらの証明書を ACM との統合を介してロードバランサーにインストールすることはできません。これらの証明書をロードバランサーで使用するには、IAM にアップロードする必要があります。

また、SSL/TLS ツールを使用して署名証明書リクエスト (CSR) を作成し、CA から CSR 署名を取得して証明書を発行し、ACM にこの証明書をインポートする、あるいは AWS Identity and Access Management (IAM) に証明書をアップロードすることもできます。ACM への証明書のインポートに関する詳細については、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。IAM にアップロードする証明書に関する詳細については、IAM ユーザーガイド の「サーバー証明書の使用」を参照してください。

デフォルトの証明書

HTTPS リスナーを作成するには、厳密に 1 つの証明書を指定する必要があります。この証明書は、default certificate として知られています。

証明書のリスト内の追加の証明書を指定する場合、クライアントがホスト名を指定するために Server Name Indication (SNI) プロトコルを使用せずに接続した場合、または証明書リストに一致する証明書がない場合にのみデフォルトの証明書が使用されます。

追加の証明書を指定せずに単一のロードバランサーを介して複数の安全なアプリケーションをホストする必要がある場合は、ワイルドカード証明書を使用するか、または追加ドメインごとにサブジェクト代替名 (SAN) を証明書に追加できます。

証明書リスト

HTTPS リスナーを作成すると、デフォルトの証明書と空の証明書リストが表示されます。リスナーの証明書リストに証明書を追加することもできます。証明書リストを使用すると、ロードバランサーは同じポートで複数のドメインをサポートし、ドメインごとに異なる証明書を提供できます。

ロードバランサーは、SNI をサポートするスマート証明書の選択アルゴリズムを使用します。クライアントから提供されたホスト名が証明書リスト内の単一の証明書と一致する場合、ロードバランサーはこの証明書を選択します。クライアントが提供するホスト名が証明書リストの複数の証明書と一致する場合、ロードバランサーはクライアントがサポートできる最適な証明書を選択します。証明書の選択は、次の条件と順序に基づいて行われます。

  • パブリックキーアルゴリズム (RSA よりも ECDSA が優先)

  • ハッシュアルゴリズム (MD5 よりも SHA が優先)

  • キーの長さ (最大が優先)

  • 有効期間

ロードバランサーアクセスログエントリは、クライアントが指定したホスト名とクライアントが提出する証明書を示します。詳細については、「アクセスログのエントリ」を参照してください。

証明書の更新

各証明書には有効期間が記載されています。有効期間が終了する前に、必ずロードバランサーの各証明書を更新するか、置き換える必要があります。これには、デフォルトの証明書と証明書リスト内の証明書が含まれます。証明書を更新または置き換えしても、ロードバランサーノードが受信し、正常なターゲットへのルーティングを保留中の未処理のリクエストには影響しません。証明書更新後、新しいリクエストは更新された証明書を使用します。証明書置き換え後、新しいリクエストは新しい証明書を使用します。

証明書の更新と置き換えは次のとおりに管理できます。

  • AWS Certificate Manager が提供し、ロードバランサーにデプロイされた証明書は、自動的に更新できます。ACM は期限切れになる前に証明書を更新しようとします。詳細については、AWS Certificate Manager ユーザーガイド管理された更新を参照してください。

  • 証明書を ACM にインポートした場合は、証明書の有効期限をモニタリングし、期限切れ前に更新する必要があります。詳細については、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

  • IAM に証明書をインポートする場合、新しい証明書を作成し、この新しい証明書を ACM あるいは IAM にインポートします。ロードバランサーにこの新しい証明書を追加し、期限切れの証明書をロードバランサーから削除します。

セキュリティポリシー

Elastic Load Balancing は、セキュリティポリシーと呼ばれる Secure Socket Layer (SSL) ネゴシエーション設定を使用して、クライアントとロードバランサー間の SSL 接続をネゴシエートします。セキュリティポリシーはプロトコルと暗号の組み合わせです。プロトコルは、クライアントとサーバーの間の安全な接続を確立し、クライアントとロードバランサーの間で受け渡しされるすべてのデータのプライバシーを保証します。暗号とは、暗号化キーを使用してコード化されたメッセージを作成する暗号化アルゴリズムです。プロトコルは、複数の暗号を使用し、インターネットを介してデータを暗号化します。接続ネゴシエーションのプロセスで、クライアントとロードバランサーでは、それぞれサポートされる暗号とプロトコルのリストが優先される順に表示されます。デフォルトでは、サーバーのリストで最初にクライアントの暗号と一致した暗号が安全な接続用に選択されます。

Application Load Balancer ではクライアントまたはターゲット接続の SSL 再ネゴシエーションはサポートされていません。

フロントエンド接続に使用するセキュリティポリシーを選択できます。バックエンド接続には、常に ELBSecurityPolicy-2016-08 セキュリティポリシーが使用されます。Application Load Balancer はカスタムセキュリティポリシーをサポートしていません。

Elastic Load Balancing に用意されている Application Load Balancer 用のセキュリティポリシーは次のとおりです。

  • ELBSecurityPolicy-2016-08

  • ELBSecurityPolicy-FS-2018-06

  • ELBSecurityPolicy-TLS-1-2-2017-01

  • ELBSecurityPolicy-TLS-1-2-Ext-2018-06

  • ELBSecurityPolicy-TLS-1-1-2017-01

  • ELBSecurityPolicy-2015-05

  • ELBSecurityPolicy-TLS-1-0-2015-04

一般的な使用には ELBSecurityPolicy-2016-08 ポリシーをお勧めします。Forward Secrecy (FS) を必要とする場合は、ELBSecurityPolicy-FS-2018-06 ポリシーを使用できます。ELBSecurityPolicy-TLS ポリシーの 1 つを使用して、特定の TLS プロトコルバージョンを無効にする必要があるコンプライアンスおよびセキュリティ標準を満たすか、廃止された暗号を必要とするレガシークライアントをサポートできます。TLS バージョン 1.0 を必要とするのは、一部のインターネットクライアントのみです。ロードバランサーへのリクエストの TLS プロトコルバージョンを表示するには、ロードバランサーのアクセスログ記録を有効にして、アクセスログを調べます。詳細については、「アクセスログ」を参照してください。

次の表は、Application Load Balancer に定義されたセキュリティポリシーについて示しています。

セキュリティポリシー 2016-08 * FS-2018-06 TLS-1-2 TLS-1-2-Ext TLS-1-1 TLS-1-0 †
TLS Protocols

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

TLS Ciphers

ECDHE-ECDSA-AES128- GCM-SHA256

ECDHE-RSA-AES128- GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256- GCM-SHA384

ECDHE-RSA-AES256- GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

DES-CBC3-SHA

* Application Load Balancer の ELBSecurityPolicy-2016-08 および ELBSecurityPolicy-2015-05 のセキュリティポリシーは同じです。

† DES-CBC3-SHA 暗号 (弱い暗号) を必要とするレガシークライアントをサポートする必要がない限り、このセキュリティポリシーは使用しないでください。

AWS CLI を使用して、Application Load Balancer のセキュリティポリシーの設定を表示するには、describe-ssl-policies コマンドを使用します。

HTTPS リスナーの追加

クライアントからロードバランサーへの接続用のプロトコルとポート、およびデフォルトのリスナールールのターゲットグループでリスナーを設定します。詳細については、「リスナーの設定」を参照してください。

前提条件

  • 転送アクションをデフォルトのリスナールールに追加するには、利用可能なターゲットグループを指定する必要があります。詳細については、「ターゲットグループの作成」を参照してください。

  • HTTPS リスナーを作成するには、証明書とセキュリティポリシーを指定する必要があります。ターゲットにリクエストをルーティングする前に、ロードバランサーはこの証明書を使用して接続を終了し、クライアントからのリクエストを復号します。ロードバランサーは、クライアントと SSL 接続のネゴシエーションを行うときにセキュリティポリシーを使用します。

コンソールを使用した HTTPS リスナーを追加するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

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

  3. ロードバランサーを選択し、[Listeners (リスナー)]、[Add listener (リスナーの追加)] を選択します。

  4. [Protocol : port (プロトコル : ポート) で、[HTTPS] を選択してデフォルトのポートのままにするか、別のポートを入力します。

  5. (オプション) ユーザーを認証するには、[Default actions (デフォルトアクション)] で、[Add action (アクションの追加)]、[Authenticate (認証)] の順に選択し、必要な情報を入力します。アクションを保存するには、チェックマークアイコンを選択します。詳細については、「Application Load Balancer を使用してユーザーを認証する」を参照してください。

  6. [Default actions (デフォルトアクション)] で、次のいずれかを実行します。

    • [アクションの追加]、[転送先] の順に選択し、ターゲットグループを選択します。

    • [アクションの追加]、[リダイレクト先] の順に選択し、リダイレクト先の URL を指定します。詳細については、「リダイレクトアクション」を参照してください。

    • [アクションの追加]、[Return fixed response (固定レスポンスを返す)] の順に選択し、レスポンスコードと (オプション) レスポンスの本文を指定します。詳細については、「固定レスポンスアクション」を参照してください。

    アクションを保存するには、チェックマークアイコンを選択します。

  7. [Security policy (セキュリティポリシー)] では、デフォルトのセキュリティポリシーを維持することをお勧めします。

  8. [Default SSL certificate (デフォルトの SSL 証明書)] で、次のいずれかを実行します。

    • AWS Certificate Manager を使用して証明書を作成またはインポートした場合は、[From ACM (ACM から)] を選択して、証明書を選択します。

    • IAM を使用して証明書をアップロードした場合は、[From IAM (IAM から)] を選択して、証明書を選択します。

  9. [Save] を選択します。

  10. (オプション) パスパターンまたはホスト名に基づいてリクエストを転送する追加のリスナールールを定義する方法については、「ルールの追加」を参照してください。

  11. (オプション) SNI プロトコルで使用するための証明書リストを追加するには、「証明書リストに証明書を追加する」を参照してください。

AWS CLI を使用した HTTPS リスナーを追加するには

create-listener コマンドを使用してリスナーとデフォルトのルールを作成し、create-rule コマンドを使用して追加のリスナールールを定義します。

HTTPS リスナーを更新する

HTTPS リスナーを作成すると、デフォルトの証明書の置き換え、証明書リストの更新、またはセキュリティポリシーの置き換えが可能になります。詳細については、「Application Load Balancer 用の HTTPS リスナーを更新する」を参照してください。