Network Load Balancer の TLS リスナー - Elastic Load Balancing

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 サポートおよび Network Load Balancer での SNI サポートを参照してください。

サーバー証明書

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

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

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

また、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- プレフィックスが削除されています。

セキュリティポリシー 
                                            TLS13-1-2-2021-06*
                                        
                                            TLS13-1-3-2021-06
                                        
                                            TLS13-1-2-Res-2021-06
                                        
                                            TLS13-1-2-Ext2-2021-06
                                        
                                            TLS13-1-2-Ext1-2021-06
                                        
                                            TLS13-1-1-2021-06
                                        
                                            TLS13-1-0-2021-06
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- プレフィックスは、見出し行に収まるようにポリシー名から削除されています。

セキュリティポリシー 
                                            ELBSecurityPolicy-2016-08
                                        
                                            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
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- プレフィックスが削除されています。

セキュリティポリシー 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-TLS-1-2-Ext-2018-06
                                        
                                            ELBSecurityPolicy-TLS-1-2-2017-01
                                        
                                            ELBSecurityPolicy-TSL-1-1-2017-01
                                        
                                            ELBSecurityPolicy-TLS-1-0-2015-04
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 ポリシーの更新」を参照してください。