アプリケーションのデータ転送を暗号化したい場合は、HTTPS リスナーを作成して HTTPS リクエストを転送できます。HTTPS リスナーは、SSL または TLS が有効になっているクライアントと Application Load Balancer (ALB) との間の暗号化されたデータ転送をサポートします。
前提条件
ALB インスタンスが作成されていること。
TLS セキュリティポリシーと少なくとも 1 つの SSL サーバー証明書が ALB インスタンスにデプロイされていること。
サーバーグループが作成されていること。
操作手順
このトピックでは、HTTPS リスナーを作成するための 2 つの手順について説明します。必要に応じて、いずれかの方法を選択できます。
手動作成
ステップ 1:リスナーの作成
ALB コンソールにログインします。
上部のナビゲーションバーで、ALB インスタンスが存在するリージョンを選択します。
次のいずれかの方法でリスナー設定ウィザードを開きます:
インスタンス ページで、管理する ALB インスタンスを見つけ、操作 列の リスナーの作成 をクリックします。
インスタンス ページで、管理する ALB インスタンスの ID をクリックします。リスナー タブで、リスナーの作成 をクリックします。
リスナーの設定 ウィザードページで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
説明
リスナープロトコルの選択
リスナープロトコルを選択します。
この例では、[HTTPS] が選択されています。
リスナーポート
ALB インスタンスがリッスンするポートを入力します。ALB インスタンスはこのポートでリッスンし、リクエストをバックエンドサーバーに転送します。この例では、ポート 443 が使用されます。ほとんどの場合、HTTP にはポート 80、HTTPS にはポート 443 が使用されます。
有効な値:1~65535。
説明同じ ALB インスタンス上で、同じプロトコルを使用するリスナーのポートは一意である必要があります。HTTP リスナーと HTTPS リスナーは異なるポートを使用する必要があります。
リスナー名
リスナーの名前を入力します。
タグ
[タグキー] と [タグ値] パラメーターを設定してタグを追加します。1 つ以上のタグを追加できます。
タグを指定した後、[リスナー] タブでタグによってリスナーをフィルターできます。
詳細設定
[変更] をクリックして詳細設定を構成できます。
HTTP/2 の有効化
リスナーで HTTP/2 を有効にするかどうかを指定します。
アイドル接続タイムアウト期間
アイドル接続のタイムアウト期間を指定します。単位:秒。有効な値:1~600。デフォルト値:15。より長いタイムアウト期間を指定するには、[Quota Center] コンソールに移動します。
指定されたタイムアウト期間内にリクエストが受信されない場合、CLB は接続を閉じます。リクエストが受信されると、CLB は新しい接続を確立します。
説明この機能は HTTP/2 リクエストでは利用できません。
接続リクエストタイムアウト
リクエストのタイムアウト期間を指定します。単位:秒。有効な値:1~600。デフォルト値:60。より長いタイムアウト期間を指定するには、[Quota Center] コンソールに移動します。
リクエストタイムアウト期間内にバックエンドサーバーから応答がない場合、ALB はクライアントに HTTP 504 エラーコードを返します。
圧縮
圧縮を有効にすると、特定の種類のファイルが圧縮されます。圧縮を無効にすると、ファイルは圧縮されません。
Brotli はすべてのファイルタイプをサポートします。
GZIP は次のファイルタイプをサポートします:
text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml、およびapplication/json。
説明Content-Lengthの値が 1,024 バイトを超える場合にのみ、データ圧縮がトリガーされます。クライアントリクエストが Brotli と GZIP の両方の圧縮を許可している場合、ALB は Brotli 圧縮を使用します。
クライアントリクエストが GZIP 圧縮のみを許可し、少なくとも 1 つのファイルが GZIP でサポートされていない形式である場合、ALB はどのファイルも圧縮しません。
実際のクライアントソース 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 ヘッダーに複数の IP アドレスが含まれている場合、例えば
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …のようになっている場合、左端の IP アドレスが送信元クライアント IP アドレスです。ALB 転送ルールで 送信元 IP アドレスに基づくマッチング および クライアント IP アドレスごとの QPS に基づくスロットリング 機能を有効にしたい場合は、[クライアント IP の取得] スイッチをオンにして、ALB インスタンスが X-Forwarded-For ヘッダーから送信元クライアント IP アドレスを取得できるようにする必要があります。詳細については、「転送ルールの作成」をご参照ください。説明[クライアント IP の取得] は、標準および WAF 対応の ALB インスタンスでのみサポートされており、Basic ALB インスタンスではサポートされていません。
HTTP ヘッダーの追加
追加したい HTTP ヘッダーを選択します。
X-Forwarded-Forヘッダーを使用して送信元 IP アドレスを保持するかどうかを選択します。クライアント IP アドレスを保持するために X-Forwarded-For を追加を選択した場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストにX-Forwarded-Forヘッダーを追加したり、リクエストからX-Forwarded-Forヘッダーを削除したりできます。追加 (デフォルト)
[追加] を選択した場合、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 を追加:SLB-ID ヘッダーを追加して ALB インスタンスの ID を保存します。リスナープロトコルを保持するために X-Forwarded-Proto を追加:X-Forwarded-Proto ヘッダーを追加してリスナープロトコルを保存します。SLB リスナーポートを保持するために X-Forwarded-Port を追加:X-Forwarded-Port ヘッダーを追加してリスナーポートを保存します。クライアントドメイン名を保持するために X-Forwarded-Host を追加:X-Forwarded-Host ヘッダーを追加してクライアントのドメイン名を保存します。クライアントポートを保持するために X-Forwarded-Client-srcport を追加:X-Forwarded-Client-srcport ヘッダーを追加してクライアントポートを保存します。クライアント証明書の所有者情報を保持するために X-Forwarded-Clientcert-subjectdn を追加:X-Forwarded-Clientcert-subjectdn ヘッダーを追加してクライアント証明書の所有者情報を保存します。クライアント証明書の発行者情報を保持するために X-Forwarded-Clientcert-issuerdn を追加:X-Forwarded-Clientcert-issuerdn ヘッダーを追加してクライアント証明書を発行した認証局に関する情報を保存します。クライアント証明書の指紋を保持するために X-Forwarded-Clientcert-fingerprint を追加:X-Forwarded-Clientcert-fingerprint ヘッダーを追加してクライアント証明書の指紋を保存します。クライアント証明書の検証結果を保持するために X-Forwarded-Clientcert-clientverify を追加:X-Forwarded-Clientcert-clientverify ヘッダーを追加してクライアント証明書の検証結果を保存します。
説明バックエンドサーバーが HTTP 標準に従い、リクエストヘッダーを処理する際に大文字と小文字を区別しないように設定することを推奨します。
ALB によって作成され、リクエストに追加される X-Forwarded-For ヘッダーは、常に大文字の「X」で始まります。
X-Forwarded-For を除き、上記のヘッダーについては、ALB は上記で説明したルールに従って処理します。その他のヘッダーについては、ALB はリクエスト内の元の形式を保持します。
X-Forwarded-Clientcert-subjectdn、X-Forwarded-Clientcert-issuerdn、X-Forwarded-Clientcert-fingerprint、および X-Forwarded-Clientcert-clientverify のカスタムヘッダーキーを次のように指定することはできません:
slb-id,slb-ip,x-forwarded-for,x-forwarded-proto,x-forwarded-eip,x-forwarded-port,x-forwarded-client-srcport,x-forwarded-host,connection,upgrade,content-length,transfer-encoding,keep-alive,te,host,cookie,remoteip, andauthority
QUIC アップデート
Quick UDP Internet Connections (QUIC) アップグレードを有効にするかどうかを指定します。この機能を使用するには、[関連付けられた QUIC リスナー] ドロップダウンリストから QUIC リスナーを選択する必要があります。
QUIC リスナーが作成されていない場合は、[リスナーの作成] をクリックして作成します。詳細については、「QUIC リスナーの追加」をご参照ください。
ALB は iQUIC と gQUIC をサポートしています。詳細については、「QUIC を使用してビデオおよびオーディオコンテンツの配信を高速化する」をご参照ください。
ステップ 2:SSL 証明書の追加
HTTPS リスナーを作成するには、データ転送を保護するために ID 認証用の 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 リスナーは作成直後には利用できません。HTTPS リスナーを有効にするには、約 1~3 分かかります。
複数のドメイン名にアクセスしたり、複数のサーバー証明書を追加したりする場合は、HTTPS リスナーに追加の証明書を追加できます。
[SSL 証明書の設定] ステップで、サーバー証明書を選択します。
(オプション) [相互認証を有効化] をオンにし、証明書ソースを選択します。
CA 証明書のソースとして [Alibaba Cloud] を選択し、[デフォルト CA 証明書] ドロップダウンリストから CA 証明書を選択します。
利用可能な CA 証明書がない場合は、[CA 証明書の購入] をクリックして作成できます。
または、CA 証明書のソースとして [サードパーティ] を選択し、[デフォルト CA 証明書] ドロップダウンリストから CA 証明書を選択します。
利用可能な自己署名 CA 証明書がない場合は、ドロップダウンリストの [自己署名 CA 証明書のアップロード] をクリックします。[証明書アプリケーションリポジトリ] ページで、[アップロードされた CA 証明書] を [データソース] としてリポジトリを作成します。その後、自己署名ルート CA 証明書または中間 CA 証明書をリポジトリにアップロードします。
相互認証は、標準および WAF 対応の ALB インスタンスでのみサポートされています。Basic ALB インスタンスでは相互認証はサポートされていません。
この機能を有効にした後で相互認証を無効にする場合は、次の操作を実行します:
[インスタンス] ページで、管理する ALB インスタンスの ID をクリックします。
[リスナー] タブで、管理する HTTPS リスナーの ID をクリックします。
[リスナーの詳細] タブの [SSL 証明書] セクションで相互認証を無効にします。
[TLS セキュリティポリシー] を選択し、[次へ] をクリックします。
利用可能な TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックして作成します。
TLS セキュリティポリシーには、HTTPS リスナーで利用可能な TLS プロトコルバージョンと暗号スイートが含まれています。
ステップ 3:サーバーグループの選択
サーバーグループ ステップで、サーバーグループを選択し、バックエンドサーバーを表示してから、[次へ] をクリックします。
ステップ 4:設定の確認
確定 ステップで、設定を確認し、[送信] をクリックします。
クイック作成
この方法を選択した場合、リスナープロトコル、リスナーポート、サーバー証明書、TLS セキュリティポリシー、およびサーバーグループを指定するだけで済みます。
ALB コンソールにログインします。
上部のナビゲーションバーで、ALB インスタンスが存在するリージョンを選択します。
[インスタンス] ページで、管理する ALB インスタンスを見つけ、その ID をクリックします。
[リスナー] タブをクリックします。[リスナー] タブで、[リスナーのクイック作成] をクリックします。
[リスナーのクイック作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
リスナープロトコル
リスナープロトコルを選択します。この例では、[HTTPS] が選択されています。
リスナーポート
リクエストを受信し、バックエンドサーバーに転送するために使用されるフロントエンドポート。
一般的に使用されるポートを選択するか、ポート番号を入力できます。有効な値:1~65535。
サーバー証明書
ドロップダウンリストからサーバー証明書を選択します。
利用可能なサーバー証明書がない場合は、[SSL 証明書の作成] をクリックして作成します。詳細については、「SSL 証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
リソースグループ
サーバーグループのリソースグループを選択します。
TLS セキュリティポリシー
利用可能な TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックして作成します。詳細については、「TLS セキュリティポリシー」をご参照ください。
サーバーグループ
サーバーグループのタイプとサーバーグループ内のバックエンドサーバーを設定します。
よくある質問
X-Forwarded-For ヘッダーのなりすましを防止するにはどうすればよいですか?
HTTPS リスナーは TLS 1.0、1.1、1.2、および 1.3 をサポートしています。詳細については、「TLS セキュリティポリシー」をご参照ください。
バックエンドサーバーは、関連付けられた HTTPS リスナーが使用する 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には一致しません。
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 プロトコルをサポートしていますか?
デフォルトでは、ALB HTTPS リスナーは WebSocket Secure をサポートしています。チュートリアルについては、「WebSocket を使用してリアルタイムメッセージングを有効にする」をご参照ください。
関連ドキュメント
詳細情報
ALB はさまざまな高度なルーティング機能をサポートしています。詳細については、「リスナーの転送ルールの管理」をご参照ください。
エラーコードの問題が発生した場合は、「ALB エラーステータスコード」をご参照ください。
バックエンドサーバーが異常と判断された場合は、「ALB ヘルスチェックの問題のトラブルシューティング」をご参照ください。
HTTPS リスナーはさまざまなユースケースに最適です。詳細については、次のトピックをご参照ください:
HTTP リクエストを HTTPS リスナーにリダイレクトする:ALB リスナーの転送ルールを設定して、HTTP リクエストを HTTPS リスナーにリダイレクトします。これにより、ALB インスタンス上のデータ転送が暗号化され、中間者攻撃やデータ漏洩を防ぎ、現代的で安全なネットワークアーキテクチャの構築に役立ちます。
データ転送のエンドツーエンド HTTPS 暗号化を設定する:ALB はデータ転送のエンドツーエンド HTTPS 暗号化をサポートしており、クライアントと ALB 間、および ALB とバックエンドサーバー間のデータ転送を暗号化して、機密データのセキュリティを強化します。
ALB インスタンスが HTTPS 経由で複数のドメイン名を提供できるように設定する:さまざまなドメイン名宛ての HTTPS リクエストを異なるバックエンドサーバーに転送するには、HTTPS リスナーに複数の証明書を関連付け、ドメインベースの転送ルールを設定します。
HTTPS リスナーで相互認証を設定する:金融や医療などの高いセキュリティ認証を必要とするビジネス向けに、ALB インスタンスで HTTPS 相互認証を有効にします。これにより、クライアントとサーバーの両方が互いの ID を検証する必要があり、データ転送のセキュリティが向上します。