超高性能かつ大規模な TLS オフロードを必要とするシナリオでは、Network Load Balancer (NLB) インスタンスに TCP/SSL リスナーを追加して、クライアントベースの暗号化を使用する TCP リクエストを転送できます。
前提条件
NLB インスタンスが作成されていること。 詳細については、「NLB インスタンスの作成と管理」をご参照ください。
サーバーグループが作成されていること。 詳細については、「NLB サーバーグループ」をご参照ください。
手順
このトピックでは、TCP/SSL リスナーを作成する 2 つの方法について説明します。要件に基づいて方法を選択してください。
TCP/SSL リスナーの作成: この方法では、フルポートリスニングや詳細設定などの機能をカスタマイズできます。
TCP/SSL リスナーのクイック作成: この方法では、リスナープロトコル、リスナーポート、サーバー証明書、TLS セキュリティポリシー、および転送用のバックエンドサーバーグループのみを設定することで、リスナーを迅速に作成できます。
TCP/SSL リスナーの作成
ステップ 1: リスナーの設定
NLB コンソールにログインします。
上部のナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、宛先インスタンスを見つけ、次のいずれかの方法でリスナー設定ウィザードを開きます:
[操作] 列で、[リスナーの作成] をクリックします。
インスタンス ID をクリックし、[リスナー] タブをクリックしてから、[リスナー] タブのリスナーリストの上にある [リスナーの作成] をクリックします。
インスタンス ID をクリックします。インスタンス詳細ページの設定ウィザードで [リスナーの作成] をクリックします。
インスタンス ID をクリックします。インスタンス詳細ページの右上隅にある [リスナーの作成] をクリックします。
ウィザードの [リスナーの設定] ページで、次のパラメーターを設定し、[次へ] をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナープロトコルを選択します。このトピックでは、TCPSSL を例として使用します。
フルポート機能
フルポート機能を有効にするかどうかを選択します。この機能を有効にすると、NLB は指定されたポート範囲内のすべてのポートでリッスンし、これらのポートで受信したリクエストをバックエンドサーバーの対応するポートに転送します。
説明フルポートリスナーに追加されるサーバーグループは、フルポート転送機能が有効になっている必要があります。
リスナーポート範囲
フルポート機能が有効になっている場合は、[リスナーポート範囲] の開始ポートと終了ポートを入力します。
重要リスナーの作成後、リスナーポート範囲は変更できません。
リスナーポート
リクエストを受信してバックエンドサーバーに転送するフロントエンドの [ポート] を入力します。
一般的なポートをクリックして値をすばやく設定するか、ポート番号を入力できます。ポート番号は 1~65535 の範囲である必要があります。
このパラメーターは、[フルポート機能] が有効になっている場合は不要です。
リスナー名
リスナーのカスタム名を入力します。
タグ
[タグキー] と [タグ値] を設定します。
タグを設定すると、[リスナー] タブでタグによってリスナーをフィルターできます。
詳細設定
[変更] をクリックして詳細設定セクションを展開します。
接続アイドルタイムアウト
アイドル状態の TCP/SSL 接続のタイムアウト期間を指定します。タイムアウト期間内にリクエストが受信されない場合、NLB は一時的に接続を中断します。次のリクエストが到着すると、新しい接続が確立されます。
値は 1~900 秒の範囲である必要があります。デフォルト値は 900 秒です。
新規接続スロットリング
新規接続のスロットリングを有効にするかどうかを選択します。
1 秒あたりの最大新規接続数
新規接続のスロットリングを有効にする場合、各ゾーン (各仮想 IP アドレス (VIP) ごと) でリスナーが処理できる 1 秒あたりの最大新規接続数を設定します。
重要この制限は現在のリスナーにのみ適用されます。他のリスナーへのトラフィックは影響を受けません。他のリスナーのスロットリング制限は、それぞれ独自の設定に基づきます。
Proxy Protocol の有効化
Proxy Protocol を有効にするかどうかを選択します。この機能を有効にすると、クライアントの送信元 IP アドレスが Proxy Protocol を通じてバックエンドサーバーに渡されます。
詳細については、「NLB を通じてクライアントの送信元 IP アドレスを取得する」をご参照ください。
重要Proxy Protocol は、プロキシサーバーとバックエンドサーバーの両方で有効になっている場合にのみ有効になります。バックエンドサーバーが Proxy Protocol ヘッダーを解析できないにもかかわらず Proxy Protocol が有効になっている場合、バックエンドサーバーで解析エラーが発生し、サービスの可用性が損なわれる可能性があります。
ALPN ポリシーの有効化
Application-Layer Protocol Negotiation (ALPN) ポリシーを有効にするかどうかを選択します。ALPN ポリシーにより、クライアントとサーバーは通信プロトコルをより詳細に制御でき、パフォーマンスとセキュリティが向上します。たとえば、HTTP/2.0 を優先することで、レイテンシーと帯域幅の使用量を削減できます。
定義: Application-Layer Protocol Negotiation (ALPN) は、トランスポート層セキュリティ (TLS) プロトコルの拡張機能です。これにより、クライアントとサーバーは TLS ハンドシェイク中にアプリケーション層プロトコルをネゴシエートできます。これにより、クライアントとサーバーは、HTTP/1.0、HTTP/1.1、または HTTP/2.0 など、通信に最も適したプロトコルを選択できます。
説明: ALPN は TLS ハンドシェイクの拡張フィールドで定義されます。NLB インスタンスが ALPN ポリシーが有効な TCP/SSL リスナーを使用する場合、TLS ハンドシェイクはクライアントと NLB インスタンスの間で行われます。クライアントはサポートされているプロトコルのリストを NLB インスタンスに送信します。NLB インスタンスはこれらのプロトコルの 1 つを選択し、ハンドシェイクが完了した後にクライアントにその選択を通知します。
ALPN ポリシー
ALPN ポリシーを有効にする場合は、ポリシーを選択します。
HTTP1Only: HTTP/1.x プロトコルのみをネゴシエートします。優先順位は HTTP/1.1 > HTTP/1.0 です。
HTTP2Only: HTTP/2.0 プロトコルのみをネゴシエートします。
HTTP2Optional: HTTP/1.x プロトコルを優先しますが、HTTP/2.0 プロトコルも受け入れます。優先順位は HTTP/1.1 > HTTP/1.0 > HTTP/2.0 です。
HTTP2Preferred: HTTP/2.0 プロトコルを優先しますが、HTTP/1.x プロトコルも受け入れます。優先順位は HTTP/2.0 > HTTP/1.1 > HTTP/1.0 です。
gRPC は HTTP/2.0 に基づいています。リスナーが gRPC リクエストを転送する場合、Alpn ポリシーを [HTTP2Only] に設定します。
ステップ 2: SSL 証明書の設定
TCP/SSL リスナーを追加する際、サービスが暗号化され、認証局 (CA) によって認証されるように、SSL 証明書を設定する必要があります。次の表に証明書について説明します。
証明書 | 説明 | 一方向認証に必要 | 相互認証が必要ですか? |
サーバー証明書 | サーバーの ID を認証するために使用されます。 ブラウザは、サーバーから送信された証明書が信頼できる CA によって発行されたものであるかどうかを確認します。 詳細については、「SSL 証明書とは」をご参照ください。 | はい Certificate Management Service でサーバー証明書を購入またはアップロードできます。NLB は Certificate Management Service から証明書を取得して使用します。 | はい Certificate Management Service でサーバー証明書を購入またはアップロードできます。NLB は Certificate Management Service から証明書を取得して使用します。 |
CA 証明書 | サーバーは CA 証明書を使用してクライアント証明書の署名を認証します。認証に失敗した場合、接続は拒否されます。 説明 クライアントがサーバーと通信するとき、クライアント証明書はクライアントの ID を認証するために使用されます。クライアント証明書はクライアントにのみインストールする必要があります。 | いいえ | はい Certificate Management Service で CA 証明書を購入できます。NLB は Certificate Management Service から証明書を取得して使用します。 |
複数のドメイン名をサポートしたり、複数のサーバー証明書をアタッチしたりするには、リスナーの作成後に TCP/SSL リスナーに拡張証明書を追加できます。 詳細については、「拡張証明書の追加」をご参照ください。
ウィザードの [SSL 証明書の設定] ページで、[サーバー証明書の選択] ドロップダウンリストからサーバー証明書を選択します。
利用可能なサーバー証明書がない場合は、ドロップダウンリストの [SSL 証明書の作成] をクリックして Certificate Management Service コンソールを開き、そこでサーバー証明書を購入またはアップロードできます。 詳細については、「商用 SSL 証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
オプション: [相互認証を有効にする] をオンにし、[デフォルト CA 証明書の選択] ドロップダウンリストから CA 証明書を選択します。
利用可能な CA 証明書がない場合は、ドロップダウンリストの [CA 証明書の購入] をクリックして新しい証明書を作成します。 詳細については、「プライベート CA の購入と有効化」をご参照ください。
説明相互認証を有効にした後で無効にする必要がある場合は、次の手順に従います。
[インスタンス] ページで、対象インスタンスの ID をクリックします。
[リスナー] タブで、対象の TCP/SSL リスナーの ID をクリックします。
[リスナー詳細] タブで、[SSL 証明書] セクションの相互認証のスイッチをオフにします。
[TLS セキュリティポリシー] を選択し、[次へ] をクリックします。
利用可能な TLS セキュリティポリシーがない場合は、ドロップダウンリストの [TLS セキュリティポリシーの作成] をクリックします。 詳細については、「TLS セキュリティポリシー」をご参照ください。
ステップ 3: サーバーグループの選択
ウィザードの [サーバーグループの選択] ページで、バックエンドサーバーグループを選択し、バックエンドサーバー情報を表示してから、[次へ] をクリックします。
サーバーグループのバックエンドプロトコルは TCP である必要があります。NLB からバックエンドサーバーに送信されるリクエストは SSL 復号化され、バックエンドサーバーは受信したリクエストに対して SSL 復号化を実行する必要はありません。
SSL over TCP を使用するリスナーを、[クライアント IP の保持] が有効になっているサーバーグループに関連付けることはできません。サーバーグループでこの機能が無効になっていることを確認してください。
ステップ 4: 設定の確認
ウィザードの [設定の確認] ページで、設定を確認し、[送信] をクリックします。
TCP/SSL リスナーのクイック作成
リスナープロトコル、リスナーポート、サーバー証明書、TLS セキュリティポリシー、および転送用のバックエンドサーバーグループのみを設定することで、リスナーを迅速に作成できます。
NLB コンソールにログインします。
上部のナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
インスタンス ページで、対象のインスタンスを見つけてその ID をクリックします。
[リスナー] タブをクリックします。[リスナー] タブで、[リスナーのクイック作成] をクリックします。
[リスナーのクイック作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナープロトコルを選択します。このトピックでは、TCPSSL を例として使用します。
リスナーポート
フロントエンドプロトコルポートを設定します。これは、リクエストを受信してバックエンドサーバーに転送するポートです。
一般的なポートをクリックして値をすばやく設定するか、ポート番号を入力できます。ポート番号は 1~65535 の範囲である必要があります。
サーバー証明書の選択
ドロップダウンリストからサーバー証明書を選択します。
利用可能なサーバー証明書がない場合は、ドロップダウンリストの [証明書の作成] をクリックして新しい証明書を作成します。 詳細については、「商用 SSL 証明書の購入」をご参照ください。
TLS セキュリティポリシー
ドロップダウンリストから TLS セキュリティポリシーを選択します。
利用可能な TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックします。 詳細については、「TLS セキュリティポリシー」をご参照ください。
転送用のバックエンドサーバーグループ
バックエンドサーバーグループを選択します。
リファレンス
チュートリアル:
イングレスに NLB インスタンスをデプロイし、TCP/SSL オフロード (一方向認証) 用に SSL 証明書を設定するには、「NLB を使用した TCP/SSL オフロード (一方向認証) の実装」をご参照ください。
イングレスに NLB インスタンスをデプロイし、TCP/SSL オフロード (相互認証) 用に SSL 証明書と CA 証明書を設定するには、「NLB を使用した TCP/SSL オフロード (相互認証) の実装」をご参照ください。
API クラス:
CreateListener: NLB インスタンスの TCP、UDP、または TCP/SSL リスナーを作成します。
DeleteListener: NLB リスナーを削除します。
ListListeners: NLB リスナーのリストを取得します。
UpdateListenerAttribute: NLB リスナーの設定を更新します。
StartListener: NLB リスナーを開始します。
StopListener: NLB インスタンスのリスナーを停止します。
GetListenerAttribute: NLB インスタンスのリスナーの詳細を取得します。
GetListenerHealthStatus: NLB インスタンスのリスナーのヘルスチェックステータスを取得します。