アプリケーションで暗号化されたデータ転送が必要な場合は、HTTPS リクエストを転送するための HTTPS リスナーを作成できます。HTTPS リスナーは、クライアントと Application Load Balancer (ALB) インスタンス間のトラフィックにエンドツーエンドの暗号化を提供します。
前提条件
TLS セキュリティポリシーと少なくとも 1 つの SSL サーバー証明書が ALB インスタンスにデプロイされていること。
手順
このトピックでは、HTTPS リスナーを作成する 2 つの方法について説明します。ニーズに応じていずれかを選択してください。
HTTPS リスナーの作成:相互認証などの高度な機能をカスタマイズします。
HTTPS リスナーのクイック作成:リスナープロトコル、リスナーポート、サーバー証明書、TLS セキュリティポリシー、バックエンドサーバーグループのみを設定して、リスナーを迅速に作成します。
HTTPS リスナーの作成
ステップ 1:リスナーの設定
上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択します。
次のいずれかの方法でリスナー設定ウィザードを開きます。
インスタンス ページで、対象のインスタンスを見つけ、リスナーの作成 列の 操作 をクリックします。
[インスタンス] ページで、対象のインスタンス ID をクリックします。[リスナー] タブで、[リスナーの作成] をクリックします。
「リスナーの設定」ウィザードで、以下の設定を完了し、「[次へ]」をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナープロトコルのタイプを選択します。
この例では、[HTTPS] を選択します。
リスナーポート
リクエストを受信し、バックエンドサーバーに転送するポートを入力します。この例では、[443] を入力します。通常、HTTP はポート 80 を使用し、HTTPS はポート 443 を使用します。
有効な値:1~65535。
説明同じ ALB インスタンス上では、同じプロトコルを使用するリスナーのポートは一意である必要があります。HTTP リスナーと HTTPS リスナーは異なるポートを使用する必要があります。
リスナー名
リスナーの名前を入力します。
タグ
[タグキー] と [タグ値] を設定します。
タグを追加すると、[リスナー] タブでタグを使用してリスナーをフィルターできます。
詳細設定
[変更] をクリックして、詳細設定を展開します。
HTTP/2 の有効化
HTTP/2 を有効にするかどうかを選択します。
アイドル接続タイムアウト期間
アイドル接続のタイムアウトを秒単位で指定します。有効な値:1~600。デフォルト:15 秒。このクォータを増やすには、Quota Center に移動してください。
タイムアウト期間内にリクエストが到着しない場合、ロードバランサーは現在の接続を閉じ、次のリクエストが到着したときに新しい接続を確立します。
接続リクエストタイムアウト
リクエストのタイムアウトを秒単位で指定します。有効な値:1~600。デフォルト:60 秒。このクォータを増やすには、Quota Center に移動してください。
バックエンドサーバーがタイムアウト期間内に応答しない場合、ロードバランサーは待機を停止し、クライアントに HTTP 504 エラーを返します。
データ圧縮
実際のクライアントソース IP を見つける
ALB インスタンスが X-Forwarded-For ヘッダーからクライアント IP アドレスを取得するかどうかを指定します。この機能を有効にする場合は、信頼できる IP アドレスを指定する必要があります。
信頼できる IP アドレスリストを
0.0.0.0/0に設定すると、ALB インスタンスは X-Forwarded-For ヘッダーの左端の IP アドレスを取得します。この IP アドレスが送信元クライアント IP アドレスです。信頼できる IP アドレスリストを
proxy1 IP;proxy2 IP;..の形式で設定すると、ALB インスタンスは X-Forwarded-For ヘッダー内の IP アドレスを右から左へ信頼できる IP アドレスリストと比較します。信頼できる IP アドレスリストにない最初の IP アドレスが、送信元クライアント IP アドレスと見なされます。
使用上の注意
X-Forwarded-For ヘッダーに
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …のように複数の IP アドレスが含まれている場合、左端の IP アドレスがソースクライアント IP アドレスです。 ALB 転送ルールで [ソース IP アドレスに基づくマッチング] 機能と [クライアント IP アドレスあたりの QPS に基づく速度制限] 機能を有効にする場合は、[クライアント IP の取得] スイッチをオンにして、ALB インスタンスが X-Forwarded-For ヘッダーからソースクライアント IP アドレスを取得できるようにする必要があります。 詳細については、「転送ルールの追加」をご参照ください。説明[クライアント IP の取得] は、標準 ALB インスタンスおよび WAF 有効化済み ALB インスタンスでのみサポートされていますが、ベーシック ALB インスタンスではサポートされていません。
追加の HTTP ヘッダーフィールド
追加するカスタム HTTP ヘッダーを選択します:
クライアント IP アドレスを取得するために
X-Forwarded-Forヘッダーを有効にするかどうかを選択します。クライアント IP アドレスを保持するために X-Forwarded-For を追加を選択した場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストにX-Forwarded-Forヘッダーを追加したり、リクエストからX-Forwarded-Forヘッダーを削除したりできます。追加 (デフォルト)
「[Add]」を選択すると、ALB はリクエストをバックエンドサーバーに転送する前に、リクエスト内の X-Forwarded-For ヘッダーに最終ホップの IP アドレスを追加します。リクエストに X-Forwarded-For ヘッダーが含まれていない場合、ALB は値が最終ホップの IP アドレスである X-Forwarded-For ヘッダーを作成し、そのヘッダーをリクエストに追加します。リクエスト内の X-Forwarded-For ヘッダーには、カンマ (,) で区切られた複数の IP アドレスが含まれている場合があります。
削除
「削除」を選択すると、ALB はバックエンドサーバーにリクエストを転送する前に、リクエストから
X-Forwarded-Forヘッダーを削除します。
クライアント IP アドレスを保持するために X-Forwarded-For を追加を選択しない場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストのX-Forwarded-Forヘッダーに対して何もしません。
フォーマット:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …SLB-IDヘッダーフィールドを追加して、SLB インスタンス ID を取得します。X-Forwarded-Protoヘッダーフィールドを追加して、インスタンスのリスナープロトコルを取得します。X-Forwarded-Portヘッダーフィールドを追加して、Server Load Balancer インスタンスのリスニングポートを取得します。X-Forwarded-Hostヘッダーフィールドを追加して、SLB インスタンスにアクセスするクライアントのドメイン名を取得します。X-Forwarded-Client-srcportヘッダーフィールドを追加して、Server Load Balancer インスタンスにアクセスするクライアントのポートを取得します。X-Forwarded-Clientcert-subjectdnヘッダーフィールドを追加して、SLB インスタンスにアクセスするクライアント証明書から所有者情報を取得します。X-Forwarded-Clientcert-issuerdnヘッダーフィールドを追加して、SLB インスタンスへのアクセスに使用されるクライアント証明書の発行者情報を取得します。X-Forwarded-Clientcert-fingerprintヘッダーフィールドを追加して、Server Load Balancer インスタンスにアクセスするクライアント証明書の指紋値を取得します。X-Forwarded-Clientcert-clientverifyヘッダーを追加して、クライアント証明書の検証結果を保存します。
説明QUIC アップデート
QUIC スペックアップを有効にするかどうかを指定します。有効にした場合、[関連付けられた QUIC リスナー] ドロップダウンリストから作成済みの QUIC リスナーを選択します。
QUIC リスナーが存在しない場合は、[リスナーの作成] をクリックして作成します。詳細については、「QUIC リスナーの追加」をご参照ください。
ALB は iQUIC と gQUIC をサポートしています。詳細については、「QUIC を使用してビデオおよびオーディオコンテンツの配信を高速化する」をご参照ください。
ステップ 2:SSL 証明書の設定
HTTPS リスナーを追加する際には、トラフィックを暗号化し、信頼できる認証局でサービスを認証するために SSL 証明書を設定する必要があります。次の表に、ALB がサポートする証明書を示します。
証明書 | 説明 | 一方向認証に必要 | 相互認証に必要 |
サーバー証明書 | サーバーの ID を検証します。 ブラウザは、サーバーから送信された証明書が信頼できる認証局 (CA) によって署名および発行されているかどうかを確認します。詳細については、「SSL 証明書とは」をご参照ください。 | はい。 Certificate Management Service コンソールでサーバー証明書を購入またはアップロードできます。ALB は Certificate Management Service から証明書を取得して使用します。 | はい。 Certificate Management Service コンソールでサーバー証明書を購入またはアップロードできます。ALB は Certificate Management Service から証明書を取得して使用します。 |
CA 証明書 | サーバーは CA 証明書を使用してクライアント証明書の署名を検証します。検証に失敗した場合、接続は拒否されます。 説明 クライアント証明書は、クライアントの ID をサーバーに対して認証します。クライアント証明書はクライアントにのみインストールする必要があります。 | いいえ。 | はい。 Certificate Management Service コンソールで CA 証明書を購入またはアップロードできます。ALB は Certificate Management Service からこの証明書を取得して使用します。 |
新しい証明書のアップロード、読み込み、検証には時間がかかります。新しい証明書を適用した後、HTTPS リスナーが有効になるまでに時間がかかります。このプロセスは通常 1 分かかりますが、最大で 3 分かかる場合があります。
複数のドメイン名をサポートしたり、複数のサーバー証明書をアタッチしたりするには、リスナーを設定した後に拡張証明書を追加できます。詳細については、「拡張証明書の追加」をご参照ください。
SSL 証明書の設定 ウィザードでは、サーバー証明書を選択できます。
任意: [相互認証] を有効にし、証明書ソースを選択します。
証明書ソースとして [Alibaba Cloud 発行] を選択します。[デフォルトの CA 証明書を選択] ドロップダウンリストから、CA 証明書を選択します。
CA 証明書がない場合は、ドロップダウンリストで[CA 証明書の購入]をクリックして、新しい CA 証明書を作成できます。 詳細については、「参照ドキュメント」をご参照ください。
証明書のソースとして、[サードパーティ発行] を選択します。[デフォルトのCA 証明書の選択] ドロップダウンリストから、CA 証明書を選択します。
自己署名 CA 証明書が利用できない場合は、ドロップダウンリストから [自己署名 CA 証明書のアップロード] をクリックし、[証明書申請リポジトリ] ページでリポジトリを作成して、データソースを [CA 証明書のアップロード] に設定した後、アップロード します。
説明相互認証は、標準および WAF 対応の ALB インスタンスでのみサポートされています。ベーシック ALB インスタンスは相互認証をサポートしていません。
相互認証を有効にした後で無効にする場合は、次の手順に従ってください:
[インスタンス]ページで、対象のインスタンス ID をクリックします。
[リスナー] タブで、対象の HTTPS リスナーの ID をクリックします。
[リスナーの詳細] タブの [SSL 証明書] セクションで、相互認証を無効化します。
[TLS セキュリティポリシー] を選択し、[次へ] をクリックします。
利用可能な TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックして作成できます。
TLS セキュリティポリシーは、HTTPS リスナーで利用可能な TLS プロトコルのバージョンと暗号スイートを定義します。
ステップ 3:サーバーグループの選択
サーバーグループ ステップで、サーバーグループを選択し、バックエンドサーバーを表示し、その後、[次へ] をクリックします。
ステップ 4:設定の確認
「確定」ページで、設定を確認し、[送信] をクリックします。
HTTPS リスナーのクイック作成
クイック作成機能を使用すると、リスナープロトコル、リスニングポート、サーバー証明書、TLS セキュリティポリシー、バックエンドサーバーグループのみを設定してリスナーを作成できます。
上部のナビゲーションバーで、ALB インスタンスが配置されているリージョンを選択します。
[インスタンス] ページで、目的のインスタンスを見つけ、そのインスタンス ID をクリックします。
まず、[リスナー] タブをクリックします。 [リスナー] タブで、[クイック作成リスナー] をクリックします。
[Quick Create Listener]ダイアログボックスで、以下のパラメーターを設定し、[OK]をクリックします。
リスナー設定
説明
リスナー プロトコル
リスナープロトコルを選択します。この例では、[HTTPS] を使用します。
リスナーポート
リスニングポートは、リクエストを受信してバックエンドサーバーに転送するフロントエンドポートです。
一般的なポートを選択するか、1 から 65535 までのポート番号を入力します。
サーバー証明書
ドロップダウンリストからサーバー証明書を選択します。
サーバー証明書が利用できない場合は、[証明書の作成] をクリックして証明書を作成します。詳細については、「公式証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
リソースグループの選択
バックエンドサーバーグループのリソースグループを選択します。
TLS セキュリティポリシー
利用可能な TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックして作成します。詳細については、「TLS セキュリティポリシー」をご参照ください。
サーバーグループ
バックエンドサーバーグループのタイプとバックエンドサーバーを選択します。
よくある質問
X-Forwarded-For フィールドの偽造を防ぐ方法は?
TLS 1.0、TLS 1.1、TLS 1.2、および TLS 1.3。詳細については、「TLS セキュリティポリシー」をご参照ください。
バックエンドサーバーは、関連付けられた HTTPS リスナーが使用する TLS バージョンを取得できますか?
はい。
HTTPS リスナーはどの HTTP バージョンを使用してネットワークトラフィックをバックエンドサーバーに配信しますか?
クライアントリクエストが HTTP/1.1 または HTTP/2 を使用する場合、レイヤー 7 リスナーは HTTP/1.1 を使用してネットワークトラフィックをバックエンドサーバーに配信します。
クライアントリクエストが HTTP/1.1 および HTTP/2 以外のプロトコルを使用する場合、レイヤー 7 リスナーは HTTP/1.0 を使用してネットワークトラフィックをバックエンドサーバーに配信します。
ワイルドカードリスナー証明書が満たすべき要件は何ですか?
ALB インスタンスに HTTPS リスナーを追加する際、ワイルドカード証明書を選択する場合は、次のルールに注意してください。
ワイルドカード証明書を選択する場合、ALB は単一のワイルドカード文字
*を含むワイルドカード証明書のみを認識します。ワイルドカード文字*はドメイン名の先頭にある必要があります。たとえば、ALB は*.example.comや*test.example.comを認識できますが、test*.example.comは認識できません。ワイルドカードドメイン名のマッチング規則:
ワイルドカードレベル:ワイルドカードドメイン名は、同じレベルのサブドメインにのみ一致します。たとえば、
*.example.comはtest.example.comに一致しますが、test.test.example.comには一致しません。なぜなら、サブドメインがワイルドカードドメイン名と同じレベルにないためです。IDNA サポート:
ワイルドカード文字がワイルドカード証明書の左端のラベルで唯一の文字である場合、国際化ドメイン名 (IDNA) ラベルはワイルドカード文字に一致できます。たとえば、
xn--fsqu00a.example.comは*.example.comに一致できます。ワイルドカード文字がワイルドカード証明書の左端のラベルで唯一の文字でない場合、IDNA ラベルはそのワイルドカード部分に一致できません。たとえば、
xn--fsqu00atest.example.comは*test.example.comに一致できません。
文字サポート:ワイルドカード証明書のワイルドカード文字
*は、数字 (0-9)、大文字と小文字のアルファベット、およびハイフン (-) にのみ一致します。たとえば、*.example.comはtest.example.comに一致しますが、test_test.example.comには一致しません。
HTTPS セッションチケットの TTL は何ですか?
HTTPS セッションチケットの TTL は 300 秒です。
X-Forwarded-For ヘッダーのなりすましを防ぐにはどうすればよいですか?
他のアップストリーム製品のヘッダーフィールドを指定して、真のクライアント IP を記録します:
たとえば、クライアント -> CDN -> WAF -> SLB > ECS というアーキテクチャでは、CDN はクライアントの真の IP を
Ali-Cdn-Real-IpHTTP ヘッダーで転送します。WAF を設定する際、クライアント IP 検出方法を「ヘッダーフィールドの指定」に設定し、Ali-Cdn-Real-Ipを使用します。その後、バックエンドの Nginx サーバーで、真のクライアント IP のログ変数を$http_Ali_Cdn_Real_Ipに設定します。レイヤー 4 リスナー (NLB または CLB) に切り替えます:レイヤー 4 リスナーを使用すると、バックエンドサーバーは自動的に真のクライアント IP を取得できます。詳細については、「レイヤー 4 リスナーがクライアント IP アドレスを保持し、バックエンドサーバーに渡すようにする」をご参照ください。
ALB は WebSocket Secure (WSS) プロトコルをサポートしていますか?
ALB の HTTPS リスナーは、デフォルトで WebSocket Secure (WSS) プロトコルをサポートしています。チュートリアルについては、「ALB は WebSocket プロトコルを使用してリアルタイムメッセージングを行う」をご参照ください。
関連ドキュメント
チュートリアル
ALB はさまざまな高度なルーティング機能をサポートしています。詳細については、「リスナー転送ルールの設定」をご参照ください。
エラーが発生した場合は、「ALB エラーステータスコード」をご参照ください。
バックエンドサーバーが異常と判断された場合は、「ALB ヘルスチェック問題のトラブルシューティング」をご参照ください。
その他のシナリオベースのチュートリアルについては、以下のリソースをご参照ください:
ALB を使用して HTTP アクセスを HTTPS にリダイレクトする:ALB リスナーの転送ルールを使用して、HTTP リクエストを HTTPS にリダイレクトできます。これにより、転送中のデータが暗号化され、中間者攻撃やデータ漏洩を防ぎ、現代のセキュリティ基準に準拠したネットワークアーキテクチャを構築できます。
データ転送のためのエンドツーエンド HTTPS 暗号化を設定する:ALB はエンドツーエンドの HTTPS 暗号化をサポートしています。これにより、クライアントと ALB 間、および ALB とバックエンドサーバー間で転送されるデータが暗号化され、機密データのセキュリティが強化されます。
ALB インスタンスを複数のドメイン名に HTTPS で対応させるように設定する:さまざまなドメイン名宛ての HTTPS リクエストを異なるバックエンドサーバーに転送するには、HTTPS リスナーに複数の証明書を関連付け、ドメインベースの転送ルールを設定します。
HTTPS リスナーで相互認証を設定する:金融やヘルスケア業界など、高度に安全な認証を必要とするアプリケーションでは、ALB インスタンスの HTTPS 相互認証を有効にできます。これにより、クライアントとサーバーの両方が互いの ID を検証する必要があり、データ転送のセキュリティが向上します。