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