アプリケーションのデータ転送を暗号化する場合は、HTTPS リクエストを転送する HTTPS リスナーを作成できます。 HTTPS リスナーは、Application Load Balancer(ALB)と SSL または TLS が有効になっているクライアント間の暗号化データ転送をサポートします。
前提条件
ALB インスタンスが作成されている。
TLS セキュリティポリシーと少なくとも 1 つの SSL サーバー証明書がALB インスタンスにデプロイされている。
サーバーグループが作成されている。
手順
このトピックでは、HTTPS リスナーを作成するために使用できる 2 つの手順について説明します。 必要に応じて方法を選択できます。
手動作成
ステップ 1: リスナーを作成する
ALB コンソールにログインします。
上部のナビゲーションバーで、ALB インスタンスが存在するリージョンを選択します。
次のいずれかの方法を使用して、リスナー構成ウィザードを開きます。
インスタンス ページで、管理する ALB インスタンスを見つけ、操作 列の リスナーの作成 をクリックします。
インスタンス ページで、管理する ALB インスタンスの ID をクリックします。 リスナー タブで、リスナーの作成 をクリックします。
リスナーの設定 ウィザードページで、次のパラメータを設定し、[次へ] をクリックします。
パラメータ
説明
リスナープロトコルの選択
リスナープロトコルを選択します。
この例では、[HTTPS] が選択されています。
リスナーポート
ALB インスタンスが listen するポートを入力します。 ALB インスタンスはポートで listen し、リクエストをバックエンドサーバーに転送します。 この例では、ポート 443 が使用されています。 ほとんどの場合、ポート 80 は HTTP に、ポート 443 は HTTPS に使用されます。
有効な値: 1 ~ 65535。
説明同じ ALB インスタンスでは、同じプロトコルを使用するリスナーのポートは一意である必要があります。 HTTP リスナーと HTTPS リスナーは異なるポートを使用する必要があります。
リスナー名
リスナーの名前を入力します。
タグ
[タグキー] パラメータと [タグ値] パラメータを構成して、タグを追加します。 1 つ以上のタグを追加できます。
タグを指定した後、[リスナー] タブでタグ別にリスナーをフィルタリングできます。
詳細設定
[変更] をクリックして、詳細設定を構成できます。
[HTTP/2 を有効にする]
リスナーで HTTP/2 を有効にするかどうかを指定します。
アイドル接続タイムアウト期間
アイドル状態の接続のタイムアウト期間を指定します。単位:秒。有効な値:1~60。より長いタイムアウト期間を指定するには、
アイドル接続のタイムアウト期間を指定します。 単位: 秒。 有効な値: 1 ~ 60。 より長いタイムアウト期間を指定するには、クォータセンターコンソールにアクセスしてください。
指定されたタイムアウト期間内にリクエストが受信されない場合、CLB は接続を閉じます。 リクエストが受信されると、CLB は新しい接続を確立します。
説明この機能は、HTTP/2 リクエストでは使用できません。
接続リクエストタイムアウト
リクエストタイムアウト期間を指定します。 単位: 秒。 有効な値: 1 ~ 180。 より長いタイムアウト期間を指定するには、クォータセンターコンソールにアクセスしてください。
リクエストタイムアウト期間内にバックエンドサーバーから応答が受信されない場合、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
。
説明クライアントリクエストで 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 の取得] は、標準 ALB インスタンスと WAF 対応 ALB インスタンスでのみサポートされており、ベーシック ALB インスタンスではサポートされていません。
[HTTP ヘッダーの追加]
追加する HTTP ヘッダーを選択します。
X-Forwarded-For
ヘッダーを使用してソース IP アドレスを保持するかどうかを選択します。X-Forwarded-For を追加してクライアント IP アドレスを保持する
を選択すると、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
ヘッダーを削除します。
X-Forwarded-For を追加してクライアント IP アドレスを保持する
を選択しないと、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストのX-Forwarded-For
ヘッダーに対して何も行いません。
フォーマット:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
Add SLB-ID to preserve SLB instance IDs
: SLB-ID ヘッダーを追加して、SLB インスタンス ID を保存します。Add X-Forwarded-Proto to preserve listener protocols
: X-Forwarded-Proto ヘッダーを追加して、リスナー プロトコルを保存します。Add X-Forwarded-Port to preserve SLB listener ports
: X-Forwarded-Port ヘッダーを追加して、SLB リスナー ポートを保存します。Add X-Forwarded-Host to preserve client domain names
: X-Forwarded-Host ヘッダーを追加して、クライアントのドメイン名を保存します。Add X-Forwarded-Client-srcport to preserve client ports
: X-Forwarded-Client-srcport ヘッダーを追加して、クライアント ポートを保存します。Add X-Forwarded-Clientcert-subjectdn to preserve owner information about client certificates
: X-Forwarded-Clientcert-subjectdn ヘッダーを追加して、クライアント証明書の所有者情報を保存します。Add X-Forwarded-Clientcert-issuerdn to preserve information about client certificate issuers
: X-Forwarded-Clientcert-issuerdn ヘッダーを追加して、クライアント証明書を発行した認証局に関する情報を保存します。Add X-Forwarded-Clientcert-fingerprint to preserve client certificate fingerprints
: クライアント証明書のフィンガープリントを保持するために、X-Forwarded-Clientcert-fingerprint ヘッダーを追加します。Add X-Forwarded-Clientcert-clientverify to preserve client certificate verification results:
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
、およびauthority
QUIC アップデート
Quick UDP Internet Connections(QUIC)のアップグレードを有効にするかどうかを指定します。この機能を使用するには、[関連付けられている QUIC リスナー] ドロップダウンリストから QUIC リスナーを選択する必要があります。
QUIC リスナーが作成されていない場合は、[リスナーの作成] をクリックして作成します。詳細については、「QUIC リスナーを追加する」をご参照ください。
ALB は iQUIC と gQUIC をサポートしています。詳細については、「QUIC を使用して動画と音声コンテンツの配信を高速化する」をご参照ください。
ステップ 2: SSL 証明書の追加
HTTPS リスナーを作成するには、データ転送を保護するために、身元認証用の SSL 証明書を設定する必要があります。次の表に、ALB でサポートされている証明書を示します。
証明書 | 説明 | 一方向認証に必要なもの | 相互認証に必要なもの |
サーバー証明書 | サーバー証明書は、サーバーの身元を認証するために使用されます。 クライアント ブラウザは、サーバーから送信された証明書が、信頼できる認証局 (CA) によって署名および発行されているかどうかを確認します。詳細については、「SSL 証明書とは」をご参照ください。 | はい SSL Certificates Service コンソールでサーバー証明書を購入またはアップロードできます。 ALB は SSL Certificates Service から証明書を取得して使用します。 | はい SSL Certificates Service コンソールでサーバー証明書を購入またはアップロードできます。 ALB は SSL Certificates Service から証明書を取得して使用します。 |
CA 証明書 | CA 証明書は、クライアント証明書の署名を検証するためにサーバーによって使用されます。署名が有効でない場合、接続リクエストは拒否されます。 説明 クライアント証明書は、クライアントがサーバーと通信するときにクライアントの身元を認証するために使用されます。クライアント証明書はクライアントにのみインストールする必要があります。 | いいえ | はい。 SSL Certificates Service コンソールで CA 証明書を購入またはアップロードできます。 ALB は SSL Certificates Service から証明書を取得して使用します。 |
新しい証明書のアップロード、ロード、および検証には数分かかる場合があります。そのため、HTTPS リスナーは作成後すぐに使用できるようにはなりません。 HTTPS リスナーを有効にするには、約 1 ~ 3 分かかります。
複数のドメイン名にアクセスする場合、または複数のサーバー証明書を追加する場合は、HTTPS リスナーに追加の証明書を追加できます。
[SSL 証明書の設定] ステップで、サーバー証明書を選択します。
相互認証を有効にするか、TLS セキュリティポリシーを設定するには、[詳細設定] の横にある [変更] をクリックします。
[詳細設定] セクションで [相互認証を有効にする] をオンにします。
CA 証明書のソースとして [Alibaba Cloud] を選択し、[デフォルトの CA 証明書] ドロップダウンリストから CA 証明書を選択します。
CA 証明書がない場合は、[CA 証明書の購入] をクリックして作成できます。
または、CA 証明書のソースとして [サードパーティ] を選択し、[デフォルトの CA 証明書] ドロップダウンリストから CA 証明書を選択します。
自己署名 CA 証明書がない場合は、ドロップダウンリストの [自己署名 CA 証明書のアップロード] をクリックします。 [証明書アプリケーションリポジトリ] ページで、[アップロードされた CA 証明書] を [データソース] として使用してリポジトリを作成します。次に、自己署名ルート CA 証明書または中間 CA 証明書をリポジトリにアップロードします。
相互認証は、Standard および WAF 対応の ALB インスタンスでのみサポートされています。 Basic ALB インスタンスは相互認証をサポートしていません。
この機能を有効にした後に相互認証を無効にする場合は、次の操作を実行します。
[インスタンス] ページで、管理する NLB インスタンスの ID をクリックします。
[リスナー] タブで、管理する HTTPS リスナーの ID をクリックします。
[リスナーの詳細] タブの [SSL 証明書] セクションで、相互認証を無効にします。
[TLS セキュリティポリシー] を選択し、[次へ] をクリックします。
TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックして作成します。
TLS セキュリティポリシーには、HTTPS リスナーで使用可能な TLS プロトコルバージョンと暗号スイートが含まれています。
ステップ 3: サーバーグループを選択する
サーバーグループ ステップで、サーバーグループを選択し、バックエンドサーバーを表示して、[次へ] をクリックします。
ステップ 4:構成を確認する
確定 ステップで、構成を確認し、[送信] をクリックします。
クイック作成
このメソッドを選択した場合、リスナープロトコル、リスナーポート、サーバー証明書、TLS セキュリティポリシー、およびサーバーグループのみを指定する必要があります。
[ALB コンソール] にログオンします。
上部のナビゲーションバーで、ALB インスタンスが存在するリージョンを選択します。
[インスタンス] ページで、管理する NLB インスタンスを見つけ、その ID をクリックします。
[リスナー] タブをクリックします。 [リスナー] タブで、[リスナーのクイック作成] をクリックします。
[リスナーのクイック作成] ダイアログボックスで、次のパラメーターを構成し、[OK] をクリックします。
パラメーター
説明
リスナープロトコル
リスナープロトコルを選択します。この例では、[HTTPS] が選択されています。
リスナーポート
バックエンドサーバーにリクエストを受信して転送するために使用されるフロントエンドポートです。
一般的に使用されるポートを選択するか、ポート番号を入力できます。 有効な値:1 ~ 65535 です。
サーバー証明書
ドロップダウンリストからサーバー証明書を選択します。
サーバー証明書がない場合は、[SSL 証明書の作成] をクリックして作成します。詳細については、「SSL 証明書の購入」および「SSL 証明書をアップロードする」をご参照ください。
リソースグループ
サーバーグループのリソースグループを選択します。
TLS セキュリティポリシー
TLS セキュリティポリシーがない場合は、[TLS セキュリティポリシーの作成] をクリックして作成します。詳細については、「TLS セキュリティポリシー」をご参照ください。
サーバーグループ
サーバーグループで、サーバーグループのタイプとバックエンドサーバーを設定します。
よくある質問
HTTPS リスナーでサポートされている TLS バージョンは何ですか?
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 を使用してネットワークトラフィックをバックエンドサーバーに分散します。
ワイルドカードリスナー証明書はどのような要件を満たす必要がありますか?
HTTPS リスナーのワイルドカード証明書を設定する場合は、次の制限事項に注意してください。
ワイルドカード証明書を選択すると、ALB はドメイン名の左端に配置する必要がある 1 つのワイルドカード (
*
) のみを含む証明書を識別できます。たとえば、ALB は*.example.com
および*test.example.com
を識別できますが、test*.example.com
は識別できません。ワイルドカード証明書の要件:
ワイルドカードドメイン名のレベル: ワイルドカードドメイン名は、ワイルドカードドメイン名と同じレベルの特定のドメイン名と一致させることができます。たとえば、
*.example.com
はtest.example.com
と一致させることができますが、ワイルドカードドメイン名よりも 1 つ下のレベルであるtest.test.example.com
とは一致させることができません。国際化ドメイン名 (IDNA):
ワイルドカード文字が唯一のワイルドカード文字であり、ワイルドカードドメイン名の左端に配置されている場合、IDNA はワイルドカードドメイン名と一致させることができます。たとえば、
xn--fsqu00a.example.com
は*.example.com
と一致させることができます。ワイルドカード文字がワイルドカードドメイン名の左端に配置されていない場合、IDNA はワイルドカードドメイン名と一致させることができません。たとえば、
xn--fsqu00atest.example.com
は*test.example.com
と一致させることができません。
一致範囲: ワイルドカード文字 (
*
) は、数字、文字、およびハイフン (-) と一致させることができます。たとえば、*.example.com
はtest.example.com
と一致させることができますが、test_test.example.com
とは一致させることができません。
関連情報
詳細情報
ALB はさまざまな高度なルーティング機能をサポートしています。詳細については、「リスナーの転送ルールを管理する」をご参照ください。
エラーコードの問題が発生した場合は、「ALB の状態コード」をご参照ください。
バックエンドサーバーが異常と判断された場合は、「ALB ヘルスチェックの問題のトラブルシューティング」をご参照ください。
HTTPS リスナーは、さまざまなユースケースに最適です。詳細については、以下のトピックをご参照ください。