HTTPS は、SSL/TLS プロトコルを使用してクライアントとサーバー間で送信されるデータを暗号化する、HTTP のセキュアなバージョンです。ユーザー情報や ID 情報などの機密データを送信する必要があるサービスや、サービスのセキュリティを強化して潜在的なセキュリティリスクを回避したい場合は、HTTPS リスナーを作成してクライアントからの HTTPS リクエストを処理できます。
前提条件
制限事項
HTTPS リスナーを設定する場合、バックエンドプロトコルは HTTP のみです。したがって、バックエンドサーバーのポートは、HTTPS ポート (通常 443) ではなく、HTTP ポート (通常 80) に設定する必要があります。HTTP ポートは、HTTP から HTTPS へのリダイレクト用として設定することはできません。
注意事項
HTTPS リスナーのセッションチケットのデフォルトの生存時間 (TTL) は 300 秒です。
HTTPS リスナーの実際のトラフィックは、一部のトラフィックがプロトコルハンドシェイクに使用されるため、課金トラフィックよりも大きくなります。
多くの新しい接続は大量のトラフィックを消費します。
操作手順
ステップ 1: リスナーの設定
Classic Load Balancer (CLB) コンソールにログインします。
上部のナビゲーションバーで、インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、対象のインスタンスを見つけ、次のいずれかの方法でリスナーを設定します。
[操作] 列で、[リスナー設定ウィザード] をクリックします。
インスタンス ID をクリックします。インスタンス詳細ページで、[リスナー] タブを選択し、[リスナーの追加] をクリックします。
[プロトコルとリスナー] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナープロトコルを選択します。
このトピックでは、例として [HTTPS] を使用します。
メキシコリージョンの CLB インスタンスは、現在 HTTPS リスナーをサポートしていません。代わりに ALB または別のリージョンの CLB インスタンスを使用できます。
バックエンドプロトコル
リスナープロトコルが [HTTPS] の場合、[バックエンドプロトコル] は [HTTP] です。
リッスンポート
リクエストを受信し、バックエンドサーバーに転送するリッスンポート。ポート範囲は 1~65535 です。
タグ
[タグキー] と [タグ値] を選択または入力します。
詳細設定
[変更] をクリックして詳細設定を展開します。
スケジューリングアルゴリズム
スケジューリングアルゴリズムを選択します。デフォルトのアルゴリズムは [ラウンドロビン (RR)] です。
加重ラウンドロビン (WRR):重みが大きいバックエンドサーバーがより多くのリクエストを受信します。
ラウンドロビン (RR):リクエストはバックエンドサーバーに順番に分散されます。
スケジューリングアルゴリズムとその利用シーンの詳細については、「Server Load Balancer のスケジューリングアルゴリズム」をご参照ください。
セッション維持の有効化
セッション維持はデフォルトで無効になっています。
セッション維持を有効にすると、SLB は同じクライアントからのリクエストを同じバックエンドサーバーに転送します。
Cookie 処理方法:
Cookie の挿入:Cookie の TTL を指定するだけで済みます。
クライアントが最初のリクエストを送信すると、SLB は HTTP または HTTPS 応答に Cookie (ServerId) を挿入します。次回クライアントがこの Cookie を含むリクエストを送信すると、SLB サービスはリクエストを以前に記録されたバックエンドサーバーに転送します。
セッション維持のタイムアウト:[Cookie の挿入] を選択した場合は、セッション維持のタイムアウトを入力します。
Cookie の書き換え:HTTPS または HTTP 応答に挿入する Cookie を指定できます。バックエンドサーバーで Cookie の TTL と有効期間を維持する必要があります。
SLB サービスがカスタム Cookie を検出すると、元の Cookie を書き換えます。次回クライアントが新しい Cookie を含むリクエストを送信すると、SLB サービスはリクエストを以前に記録されたバックエンドサーバーに転送します。
Cookie 名:[Cookie の書き換え] を選択した場合は、Cookie 名を入力します。
HTTP/2.0 の有効化
HTTP 2.0 はデフォルトで有効になっています。
HTTP 2.0 は多重化機能を導入しています。CLB のフロントエンドプロトコルで HTTP 2.0 を有効にすると、CLB インスタンスは単一の TCP 接続で複数の HTTP リクエストと応答を同時に送信できます。これにより、転送パフォーマンスが向上します。
アクセス制御の有効化
アクセス制御はデフォルトで無効になっています。
アクセス制御を有効にした後、アクセス制御方法を選択し、リスナーのホワイトリストまたはブラックリストとしてアクセス制御ポリシグループを設定します。
ホワイトリスト: 指定された IP アドレスの SLB インスタンスへのアクセスを許可します。ネットワーク ACL で指定された IP アドレスまたは CIDR ブロックからのリクエストのみが転送されます。ホワイトリストは、特定の IP アドレスからのアクセスのみを許可したい場合に適用されます。ホワイトリストが適切に設定されていない場合、サービスに悪影響が及ぶ可能性があります。ホワイトリストが設定されると、ホワイトリストに追加された IP アドレスからのリクエストのみがリスナーによって転送されます。
ホワイトリストが設定されているが、IP アドレスがホワイトリストに追加されていない場合、リスナーはすべてのリクエストを転送します。
ブラックリスト: 指定された IP アドレスの SLB インスタンスへのアクセスを禁止します。ネットワーク ACL で指定された IP アドレスまたは CIDR ブロックからのリクエストは拒否されます。ブラックリストは、特定の IP アドレスからのアクセスを拒否したい場合に適用されます。
ブラックリストが設定されているが、IP アドレスがブラックリストに追加されていない場合、リスナーはすべてのリクエストを転送します。
ホワイトリスト:ネットワーク ACL で指定された IP アドレスまたは CIDR ブロックからのリクエストのみが転送されます。ホワイトリストは、特定の IP アドレスからのアクセスのみを許可したい場合に適用されます。ホワイトリストが適切に設定されていない場合、サービスに悪影響が及ぶ可能性があります。ホワイトリストが設定されると、ホワイトリストに追加された IP アドレスからのリクエストのみがリスナーによって転送されます。
ホワイトリストが設定されているが、IP アドレスがホワイトリストに追加されていない場合、リスナーはすべてのリクエストを転送します。
ブラックリスト:ネットワーク ACL で指定された IP アドレスまたは CIDR ブロックからのリクエストは拒否されます。ブラックリストは、特定の IP アドレスからのアクセスを拒否したい場合に適用されます。
ブラックリストが設定されているが、IP アドレスがブラックリストに追加されていない場合、リスナーはすべてのリクエストを転送します。
説明IPv6 インスタンスは IPv6 アクセス制御ポリシグループにのみバインドできます。IPv4 インスタンスは IPv4 アクセス制御ポリシグループにのみバインドできます。アクセス制御ポリシーの設定方法については、「アクセス制御ポリシグループの作成」をご参照ください。
リスナーの帯域幅制限の有効化
帯域幅課金の SLB インスタンスの場合、異なるリスナーに異なるピーク帯域幅値を設定して、そのトラフィックを制限できます。インスタンスのすべてのリスナーのピーク帯域幅値の合計は、インスタンスの帯域幅を超えることはできません。
この機能はデフォルトで無効になっています。すべてのリスナーはインスタンスの総帯域幅を共有します。リスナーが総帯域幅を共有する方法については、「CLB インスタンスのリスナーはインスタンスの帯域幅を共有する」をご参照ください。
重要たとえば、インターネット向け CLB インスタンスの最大帯域幅が 5 Mbit/s で、2 つのリスナーを設定したとします。リスナー A に 5 Mbit/s の帯域幅を割り当て、リスナー B には帯域幅を割り当てないと、リスナー B はアクセスできなくなります。帯域幅を割り当てる際は注意してください。
内部向け CLB インスタンスに 3 つのリスナーが設定されており、リスナー A とリスナー B に割り当てられた合計帯域幅が 5,120 Mbit/s の場合、リスナー C はアクセスできなくなります。帯域幅を割り当てる際は注意してください。
トラフィック課金の CLB インスタンスを使用する場合、リスナーの帯域幅はデフォルトで無制限です。
アイドル接続タイムアウト
CLB インスタンスとクライアント間の TCP 接続がデータ転送なしで開いたままにできる最大時間。値は 1~60 秒の間でなければなりません。デフォルト値は 15 秒です。
タイムアウト期間内にリクエストが受信されない場合、SLB は現在の接続を一時的に切断します。次のリクエストが到着すると、新しい接続が確立されます。
説明接続リクエストタイムアウト
バックエンドサーバーがタイムアウト期間内に応答しない場合、SLB は待機を停止し、クライアントに HTTP 504 エラーコードを返します。
値は 1~180 秒の間でなければなりません。デフォルト値は 60 秒です。より長いリクエストタイムアウトには、ALB を使用してください。ALB は最大 3600 秒のタイムアウトをサポートします。
Gzip 圧縮
この機能を有効にして、特定の種類のファイルを圧縮します。この機能を無効にすると、どのファイルタイプも圧縮されません。Gzip データ圧縮はデフォルトで有効になっています。
Gzip は次のファイルタイプをサポートしています:
text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、およびapplication/xml。追加の HTTP ヘッダーフィールド
追加したいカスタム HTTP ヘッダーフィールドを選択します:
X-Forwarded-Forヘッダーフィールドを追加して、クライアントのリアル IP アドレスを取得します。説明デフォルトでは、CLB のレイヤー 7 リスナーは X-Forwarded-For ヘッダーを使用してクライアントの IP アドレスを保持します。このヘッダーは無効にできません。複数の IP アドレスが保持されている場合、最初のものがクライアントの IP アドレスです。詳細な設定については、「レイヤー 7 リスナーがクライアントの IP アドレスを保持し、バックエンドサーバーに渡すようにする」をご参照ください。
SLB-IDヘッダーフィールドを追加して、SLB インスタンスの ID を取得します。SLB-IPヘッダーフィールドを追加して、SLB インスタンスの IP アドレスを取得します。X-Forwarded-Protoヘッダーフィールドを追加して、SLB のリスナープロトコルを取得します。
クライアント IP アドレスの取得
訪問者のリアル IP アドレスを取得します。この機能はデフォルトで有効になっています。
作成後にリスナーを自動的に開始
リスナーの設定後に SLB リスナーを開始するかどうかを指定します。この機能はデフォルトで有効になっています。
ステップ 2: SSL 証明書の設定
[SSL 証明書] ステップで、アップロードされたサーバー証明書を選択します。[サーバー証明書の選択] セクションの [サーバー証明書の作成] をクリックして、証明書をアップロードまたは購入することもできます。証明書の詳細については、「証明書の作成」をご参照ください。
オプション:[詳細設定] の横にある [変更] をクリックして、HTTPS 相互認証を有効にするか、TLS セキュリティポリシーを設定します。
[相互認証の有効化] スイッチをオンにし、アップロードされた CA 証明書を選択するか、CA 証明書を作成します。詳細については、「プライベート CA の購入と有効化」をご参照ください。
[TLS セキュリティポリシー] を選択します。
説明パフォーマンス保証型インスタンスのみが TLS セキュリティポリシーの選択をサポートします。
TLS セキュリティポリシーには、HTTPS のオプションの TLS バージョンと暗号スイートが含まれています。詳細については、「TLS セキュリティポリシー」をご参照ください。
ステップ 3: バックエンドサーバーの追加
HTTPS リスナーはプライマリ/セカンダリサーバーグループをサポートしていません。
ステップ 4: ヘルスチェックの設定
プライマリ/セカンダリサーバーグループに関連付けられているリスナーのヘルスチェックを無効にすることはできません。
よくある質問
CLB は、エンドツーエンドの HTTPS アクセスを実現するための HTTPS リスナーの設定をサポートしていますか?
いいえ、サポートしていません。HTTPS リスナーを設定する場合、バックエンドプロトコルは HTTP のみをサポートします。したがって、CLB がクライアントから HTTPS リクエストを受信すると、まずリクエストを復号化し、復号化されたデータを HTTP 経由でバックエンドサーバーに転送します。これにより、バックエンドサーバーの設定が簡素化され、HTTPS TLS ハンドシェイクによるパフォーマンスのオーバーヘッドが削減されます。
ビジネスでエンドツーエンドの HTTPS アクセスを有効にするには、次のいずれかの方法を使用できます:
Application Load Balancer (ALB) インスタンスを作成し、インスタンスに HTTPS リスナーを設定します。詳細については、「エンドツーエンドの HTTPS アクセスを設定して暗号化通信を実現する」をご参照ください。
CLB インスタンスに TCP リスナーを設定し、対応するバックエンドサーバーに SSL 証明書を設定します。
HTTPS リスナーはどのポートを使用しますか?
HTTPS リスナーにはポートに関する特別な要件はありません。ポート 443 の使用を推奨します。
SLB はどの種類の証明書をサポートしていますか?
PEM 形式のサーバー証明書と CA 証明書をアップロードできます。
サーバー証明書の場合、証明書の内容と秘密鍵をアップロードする必要があります。CA 証明書の場合、証明書の内容のみをアップロードする必要があります。
SLB は keytool を使用して作成された証明書をサポートしていますか?
はい。
証明書をアップロードする前に、PEM 形式に変換する必要があります。詳細については、「証明書形式の変換」をご参照ください。
PKCS#12 (PFX) 形式の証明書を使用できますか?
はい、使用できます。
証明書をアップロードする前に、PEM 形式に変換する必要があります。詳細については、「証明書形式の変換」をご参照ください。
証明書を追加するときに KeyEncryption エラーが発生するのはなぜですか?
このエラーは、秘密鍵の内容が無効であるために発生します。詳細については、「証明書の要件と証明書形式の変換」をご参照ください。
HTTPS リスナーはどの SSL プロトコルバージョンをサポートしていますか?
TLSv1.0、TLSv1.1、TLSv1.2、および TLSv1.3 です。
HTTPS セッションチケットの TTL は何ですか?
HTTPS セッションチケットの TTL は 300 秒です。
DH PARAMETERS フィールドを含む証明書をアップロードできますか?
HTTPS リスナーで使用される ECDHE 暗号スイートは前方秘匿性 (Forward Secrecy) をサポートしますが、DHE 暗号スイートで必要なセキュリティ強化パラメーターファイルはサポートしていません。BEGIN DH PARAMETERS フィールドを含む PEM 証明書ファイルをアップロードすることはできません。
HTTPS リスナーは SNI をサポートしていますか?
Server Name Indication (SNI) は、サーバーが複数のドメイン名と証明書を使用できるようにする SSL/TLS 拡張機能です。SLB HTTPS リスナーは SNI をサポートしています。詳細については、「CLB インスタンスの追加ドメインの追加と管理」をご参照ください。
関連ドキュメント
HTTPS はセキュリティを向上させますが、計算リソースやネットワーク遅延などのオーバーヘッドが増加する可能性があります。内部ネットワーク通信、テストおよび開発環境、または機密性の低い情報の転送などのシナリオでは、HTTP リスナーも使用できます。詳細については、「HTTP リスナーの追加」をご参照ください。本番環境では、暗号化された転送のために HTTPS を使用することを推奨します。
バックエンドサーバーグループの操作については、以下をご参照ください:
ヘルスチェックの原則については、「CLB のヘルスチェック」をご参照ください。ヘルスチェックパラメーター設定の詳細な説明については、「CLB のヘルスチェックの設定と管理」をご参照ください。
Server Load Balancer のスケジューリングアルゴリズムの紹介については、「Server Load Balancer のスケジューリングアルゴリズム」をご参照ください。
HTTPS リスナーにドメイン名または URL ベースの転送ルールを追加するには、「ドメイン名または URL パスに基づくリクエストの転送」をご参照ください。
HTTP アクセスを HTTPS にリダイレクトするには、「CLB を使用して HTTP リクエストを HTTPS にリダイレクトする」をご参照ください。
CLB を使用して片方向認証の HTTPS サービスをデプロイするには、「CLB を使用して HTTPS サービスをデプロイする (片方向認証)」をご参照ください。
CLB を使用して相互認証の HTTPS サービスをデプロイするには、「CLB を使用して HTTPS サービスをデプロイする (相互認証)」をご参照ください。
CLB を使用して複数ドメインの HTTPS ウェブサイトを設定するには、「単一の CLB インスタンスで複数ドメインの HTTPS ウェブサイトを設定する」をご参照ください。
HTTPS リスナーを使用する際に、バックエンドサーバーが CLB を介してクライアントのリアル IP アドレスを取得する必要がある場合は、「CLB のレイヤー 7 リスナーを使用してクライアントのリアル IP アドレスを取得する」をご参照ください。