Network Load Balancer の TLS リスナー
TLS リスナーを使用するには、ロードバランサーにサーバー証明書を少なくとも 1 つデプロイする必要があります。ロードバランサーはサーバー証明書を使用してフロントエンド接続を終了してから、ターゲットにリクエストを送信する前に、クライアントからのリクエストを復号します。ロードバランサーが復号化せずに、暗号化されたトラフィックをターゲットに渡す必要がある場合は、TLS リスナーを作成するのではなく、ポート 443 で TCP リスナーを作成します。ロードバランサーは、リクエストを復号化せずにそのままの状態でターゲットに渡します。
Elastic Load Balancing は、セキュリティポリシーと呼ばれる TLS ネゴシエーション設定を使用して、クライアントとロードバランサー間の TLS 接続をネゴシエートします。セキュリティポリシーはプロトコルと暗号の組み合わせです。プロトコルは、クライアントとサーバーの間の安全な接続を確立し、クライアントとロードバランサーの間で受け渡しされるすべてのデータのプライバシーを保証します。暗号とは、暗号化キーを使用してコード化されたメッセージを作成する暗号化アルゴリズムです。プロトコルは、複数の暗号を使用し、インターネットを介してデータを暗号化します。接続ネゴシエーションのプロセスで、クライアントとロードバランサーでは、それぞれサポートされる暗号とプロトコルのリストが優先される順に表示されます。サーバーのリストで最初にクライアントの暗号と一致した暗号が安全な接続用に選択されます。
Network Load Balancer は、TLS 再ネゴシエーションまたは相互 TLS 認証 (mTL) をサポートしていません。mTLS をサポートするには、TLS リスナーの代わりに TCP リスナーを作成します。ロードバランサーはリクエストをそのまま渡すため、ターゲットに mTL を実装できます。
TLS リスナーを作成するには、リスナーの追加 を参照してください。関連するデモについては、Network Load Balancer での TLS サポート
サーバー証明書
ロードバランサーには X.509 証明書 (サーバー証明書) が必要です。証明書とは、認証機関 (CA) によって発行された識別用デジタル形式です。証明書には、認識用情報、有効期間、パブリックキー、シリアル番号と発行者のデジタル署名が含まれます。
ロードバランサーで使用する証明書を作成するときに、ドメイン名を指定する必要があります。TLS 接続を検証できるように、証明書のドメイン名は、カスタムドメイン名レコードと一致する必要があります。一致しない場合、トラフィックは暗号化されません。
www.example.com
などの証明書の完全修飾ドメイン名 (FQDN) または example.com
などの apex ドメイン名を指定する必要があります。また、同じドメインで複数のサイト名を保護するために、アスタリスク (*) をワイルドカードとして使用できます。ワイルドカード証明書をリクエストする場合、アスタリスク (*) はドメイン名の一番左の位置に付ける必要があり、1 つのサブドメインレベルのみを保護できます。例えば、*.example.com
は corp.example.com
、images.example.com
を保護しますが、test.login.example.com
を保護することはできません。また、*.example.com
は、example.com
のサブドメインのみを保護し、ネイキッドドメインまたは apex ドメイン (example.com
) は保護しないことに注意してください。ワイルドカード名は、証明書の [サブジェクト] フィールドと [サブジェクト代替名] 拡張子に表示されます。公開証明書の詳細については、AWS Certificate Managerユーザーガイドの「公開証明書」を参照してください。
AWS Certificate Manager(ACM)
また、TLS を使用して署名証明書リクエスト (CSR) を作成し、CA から CSR 署名を取得して証明書を発行して、 にこの証明書をインポートする、あるいは AWS Identity and Access Management (IAM) に証明書をアップロードすることもできます。詳細については、AWS Certificate Manager ユーザーガイドの証明書のインポートまたはIAM ユーザーガイドのサーバー証明書の使用を参照してください 。
重要
2048 ビットより大きい RSA キーまたは EC キーを持つ証明書を Network Load Balancer にインストールすることはできません。
デフォルトの証明書
TLS リスナーを作成するには、厳密に 1 つの証明書を指定する必要があります。この証明書は、default certificate として知られています。TLS リスナーを作成した後、デフォルトの証明書を置き換えることができます。詳細については、「デフォルトの証明書の置き換え」を参照してください。
証明書のリスト内の追加の証明書を指定する場合、クライアントがホスト名を指定するために Server Name Indication (SNI) プロトコルを使用せずに接続した場合、または証明書リストに一致する証明書がない場合にのみデフォルトの証明書が使用されます。
追加の証明書を指定せずに単一のロードバランサーを介して複数の安全なアプリケーションをホストする必要がある場合は、ワイルドカード証明書を使用するか、または追加ドメインごとにサブジェクト代替名 (SAN) を証明書に追加できます。
証明書リスト
TLS リスナーを作成すると、デフォルトの証明書と空の証明書リストが作成されます。リスナーの証明書リストに証明書を追加することもできます。証明書リストを使用すると、ロードバランサーは同じポートで複数のドメインをサポートし、ドメインごとに異なる証明書を提供できます。詳細については、「証明書リストに証明書を追加する」を参照してください。
ロードバランサーは、SNI をサポートするスマート証明書の選択アルゴリズムを使用します。クライアントから提供されたホスト名が証明書リスト内の単一の証明書と一致する場合、ロードバランサーはこの証明書を選択します。クライアントが提供するホスト名が証明書リストの複数の証明書と一致する場合、ロードバランサーはクライアントがサポートできる最適な証明書を選択します。証明書の選択は、次の条件と順序に基づいて行われます。
-
ハッシュアルゴリズム (MD5 よりも SHA が優先)
-
キーの長さ (最大が優先)
-
有効期間
ロードバランサーアクセスログエントリは、クライアントが指定したホスト名とクライアントが提出する証明書を示します。詳細については、「アクセスログのエントリ」を参照してください。
証明書の更新
各証明書には有効期間が記載されています。有効期間が終了する前に、必ずロードバランサーの各証明書を更新するか、置き換える必要があります。これには、デフォルトの証明書と証明書リスト内の証明書が含まれます。証明書を更新または置き換えしても、ロードバランサーノードが受信し、正常なターゲットへのルーティングを保留中の未処理のリクエストには影響しません。証明書更新後、新しいリクエストは更新された証明書を使用します。証明書置き換え後、新しいリクエストは新しい証明書を使用します。
証明書の更新と置き換えは次のとおりに管理できます。
-
AWS Certificate Manager が提供し、ロードバランサーにデプロイされた証明書は、自動的に更新できます。ACM は、期限切れになる前に証明書の更新を試みます。詳細については、AWS Certificate Manager ユーザーガイドの 管理された更新 を参照してください。
-
証明書を ACM にインポートした場合は、証明書の有効期限をモニタリングし、期限切れ前に更新する必要があります。詳細については、 AWS Certificate Manager ユーザーガイドの 証明書のインポート を参照してください。
-
IAM に証明書をインポートする場合、新しい証明書を作成し、この新しい証明書を ACM あるいは IAM にインポートします。ロードバランサーにこの新しい証明書を追加し、期限切れの証明書をロードバランサーから削除します。
セキュリティポリシー
TLS リスナーを作成するときは、セキュリティポリシーを選択する必要があります。必要に応じてセキュリティポリシーを更新できます。詳細については、「セキュリティポリシーの更新」を参照してください。
フロントエンド接続に使用するセキュリティポリシーを選択できます。バックエンド接続では、TLS リスナーが TLS 1.3 セキュリティポリシーを使用している場合、ELBSecurityPolicy-TLS13-1-0-2021-06
セキュリティポリシーが使用されます。それ以外の場合、バックエンド接続には ELBSecurityPolicy-2016-08
セキュリティポリシーが使用されます。Network Load Balancer は、カスタムセキュリティポリシーをサポートしていません。
Elastic Load Balancing は、Network Load Balancer に対して次のセキュリティポリシーを提供します。
-
ELBSecurityPolicy-TLS13-1-2-2021-06
* -
ELBSecurityPolicy-TLS13-1-2-Res-2021-06
-
ELBSecurityPolicy-TLS13-1-2-Ext1-2021-06
-
ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06
-
ELBSecurityPolicy-TLS13-1-1-2021-06
-
ELBSecurityPolicy-TLS13-1-0-2021-06
-
ELBSecurityPolicy-TLS13-1-3-2021-06
-
ELBSecurityPolicy-FS-1-2-Res-2020-10
-
ELBSecurityPolicy-FS-1-2-Res-2019-08
-
ELBSecurityPolicy-FS-1-2-2019-08
-
ELBSecurityPolicy-FS-1-1-2019-08
-
ELBSecurityPolicy-FS-2018-06
-
ELBSecurityPolicy-TLS-1-2-Ext-2018-06
-
ELBSecurityPolicy-TLS-1-2-2017-01
-
ELBSecurityPolicy-TLS-1-1-2017-01
-
ELBSecurityPolicy-2016-08
** -
ELBSecurityPolicy-TLS-1-0-2015-04
-
ELBSecurityPolicy-2015-05
( と同じ)ELBSecurityPolicy-2016-08
*TLS リスナーには、ELBSecurityPolicy-TLS13-1-2-2021-06
セキュリティポリシーを使用することが推奨されます。これは、AWS Management Console を使用して作成されたリスナーのデフォルトポリシーです。このセキュリティポリシーには TLS 1.3 が含まれています。TLS 1.3 はセキュリティとパフォーマンス向けに最適化されていて、TLS 1.2 との下位互換性があります。
**ELBSecurityPolicy-2016-08
は、AWS CLI を使用して作成されたリスナーのデフォルトのセキュリティポリシーです。
前方秘匿性の場合、ELBSecurityPolicy-FS
ポリシーまたは ELBSecurityPolicy-TLS13
ポリシーの 1 つを使用できます。特定の TLS プロトコルバージョンを無効にする必要があるコンプライアンスおよびセキュリティ標準を満たす場合、または廃止された暗号を必要とするレガシークライアントをサポートする場合は、ELBSecurityPolicy-TLS
ポリシーの 1 つを使用します。TLS バージョン 1.0 を必要とするのは、一部のインターネットクライアントのみです。
Network Load Balancer に送信される TLS リクエストに関するアクセスログを有効にすると、TLS トラフィックパターンを分析してセキュリティポリシーのアップグレードを管理することや問題のトラブルシューティングを行うことができます。詳細については、「アクセスログ」および「Network Load Balancer のクエリ例」を参照してください。
TLS1.3 セキュリティポリシー
推奨されるポリシー (ELBSecurityPolicy-TLS13-1-2-2021-06
) と他の TLS 1.3 ポリシーを次の表に示します。見出し行に収まるようにポリシー名から ELBSecurityPolicy-
プレフィックスが削除されています。
セキュリティポリシー |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|---|---|---|
TLS Protocols | |||||||
Protocol-TLSv1 |
✓ | ||||||
Protocol-TLSv1.1 |
✓ | ✓ | |||||
Protocol-TLSv1.2 |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
Protocol-TLSv1.3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS Ciphers | |||||||
TLS_AES_128_GCM_SHA256 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS_AES_256_GCM_SHA384 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS_CHACHA20_POLY1305_SHA256 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
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 |
✓ | ✓ | ✓ |
AWS CLI を使用して、ロードバランサーのセキュリティポリシーの設定を表示するには、describe-ssl-policies コマンドを使用します。AWS CLI のデフォルトポリシーは、ELBSecurityPolicy-2016-08
です。AWS CLI を使用して TLS 1.3 セキュリティポリシーにアップグレードするには、create-listener および modify-listener コマンドとともに ssl-policy
パラメータを使用します。
FS セキュリティポリシー
次の表では、デフォルトポリシー ELBSecurityPolicy-2016-08
(AWS CLI のデフォルト) および ELBSecurityPolicy-FS
ポリシーについて説明します。ELBSecurityPolicy-
プレフィックスは、見出し行に収まるようにポリシー名から削除されています。
セキュリティポリシー |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|---|---|
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 |
✓ |
TLS セキュリティポリシー
以下の表では、デフォルトのポリシー ELBSecurityPolicy-2016-08
(AWS CLI のデフォルト) および ELBSecurityPolicy-TLS
ポリシーについて説明します。見出し行に収まるようにポリシー名から ELBSecurityPolicy-
プレフィックスが削除されています。
セキュリティポリシー |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|---|
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 |
✓ |
*DES-CBC3-SHA 暗号 (弱い暗号) を必要とするレガシークライアントをサポートする必要がない限り、このポリシーは使用しないでください。
AWS CLI を使用して、ロードバランサーのセキュリティポリシーの設定を表示するには、describe-ssl-policies コマンドを使用します。
ALPN ポリシー
Application-Layer Protocol Negotiation (ALPN) は、初期 TLS ハンドシェイク hello メッセージで送信される TLS 拡張機能です。ALPN を使用すると、アプリケーションレイヤーは HTTP/1 や HTTP/2 などのセキュアな接続上で使用するプロトコルをネゴシエートできます。
クライアントが ALPN 接続を開始すると、ロードバランサーはクライアントの ALPN 設定リストを ALPN ポリシーと比較します。クライアントが ALPN ポリシーからのプロトコルをサポートしている場合、ロードバランサーは ALPN ポリシーの設定リストに基づいて接続を確立します。それ以外の場合、ロードバランサーは ALPN を使用しません。
サポートされている ALPN ポリシー
サポートされている ALPN ポリシーは次のとおりです。
HTTP1Only
-
HTTP/1.* のみをネゴシエートします。ALPN 設定リストは http/1.1、http/1.0 です。
HTTP2Only
-
HTTP/2 のみをネゴシエートします。ALPN 設定リストは h2 です。
HTTP2Optional
-
HTTP/2 よりも HTTP/1.* を優先します (これは HTTP/2 テストに役立ちます)。ALPN 設定リストは http/1.1、http/1.0、h2 です。
HTTP2Preferred
-
HTTP/1.* よりも HTTP/2 を優先します。ALPN 設定リストは、h2、http/1.1、http/1.0 です。
None
-
ALPN をネゴシエートしないでください。これがデフォルト値です。
ALPN 接続を有効にする
TLS リスナーを作成または変更するときに、ALPN 接続を有効にできます。詳細については、「リスナーの追加」および「ALPN ポリシーの更新」を参照してください。