HTTPS は、データ転送を保護するために使用されるプロトコルです。サービスを HTTPS にアップグレードする必要がある場合、Application Load Balancer (ALB) インスタンスを使用すると、ユーザー側で変更を加えることなく、HTTP リクエストを HTTPS リスナーにリダイレクトできます。
ソリューション概要
ALB は、HTTP から HTTPS へのリダイレクト機能を提供します。リスナーの転送ルールを設定することで、HTTP リクエストが HTTPS リスナーにリダイレクトされ、データ転送の暗号化が保証され、中間者攻撃やデータ漏洩が防止され、現代のセキュリティ基準に準拠したネットワークアーキテクチャの構築に役立ちます。
主な利点
柔軟な設定:パス、HTTP ヘッダー、その他のパラメーターに基づいてカスタムリダイレクトルールをサポートし、複雑な利用シーンの要件を満たします。
ステータスコードの設定:301 (恒久的なリダイレクト) や 302 (一時的なリダイレクト) など、リダイレクト用にさまざまな HTTP ステータスコードをサポートします。
パフォーマンスの最適化:リダイレクト作業をロードバランサーに任せることで、バックエンドサーバーはリダイレクトを処理することなくコアビジネスの処理に集中でき、全体的な効率が向上します。
利用シーン
HTTPS へのアップグレード:既存のウェブサイトやアプリケーションを HTTP から HTTPS にアップグレードして、ユーザーとサーバー間の通信セキュリティを向上させます。
ドメイン変更/サイト移行:ウェブサイトを新しいドメインに移行する際に、リダイレクトを使用してユーザーアクセスの継続性を維持し、トラフィックの損失を防ぎます。
HTTP ヘッダーに基づくリダイレクト:HTTP ヘッダー情報 (言語、デバイスタイプなど) に基づいてユーザーリクエストを異なる HTTPS アプリケーションにリダイレクトし、パーソナライズされたサービスを提供します。
利用例
ある企業がシンガポールリージョンで ALB インスタンスを購入し、ビジネスを展開してサービスを提供しています。この企業は、データ暗号化を実装し、ユーザーエクスペリエンスの円滑さと多様性を向上させるために、ドメイン名を変更せずに HTTP プロトコルから HTTPS プロトコルに変更したいと考えています。
前提条件
インターネット向けの ALB インスタンスを作成済みであること (Basic、Standard、WAF-Enhanced エディションがすべてサポートされています)。
ALB インスタンス用のサーバーグループを作成済みであること (バックエンドプロトコルは HTTP)。
Elastic Compute Service (ECS) インスタンス ECS01 および ECS02 を ALB インスタンスのサーバーグループに追加し、ECS01 と ECS02 の両方にアプリケーションサービスをデプロイ済みであること。
この例では、バックエンドサーバーは Alibaba Cloud Linux 3 オペレーティングシステムを使用し、NGINX を使用してポート 80 を使用するバックエンド HTTP サービスを設定します。
カスタムドメイン名を登録し、ICP 登録を完了し、カスタムドメイン名を使用してALB インスタンスの CNAME レコードを追加済みであること。
証明書をリクエストして作成したか、サードパーティの証明書を Certificate Management Service にアップロードし、カスタムドメイン名に関連付け済みであること。
操作手順
このトピックでは、ALB を介して HTTP リクエストを HTTPS リスナーにリダイレクトする 2 つの方法について説明します。必要に応じて選択できます:
すべての HTTP リクエストを HTTPS にリダイレクトする:ALB 宛てのすべての HTTP リクエストを無条件に HTTPS にリダイレクトします。サイト全体で HTTPS を有効にする、または全体的なセキュリティポリシーを実装するなど、すべてのアクセスで HTTPS を使用する必要がある利用シーンに適しています。
HTTP ヘッダーに基づいてリクエストを HTTPS にリダイレクトする:HTTP リクエストヘッダー (言語、デバイスタイプなど) に基づいて条件付きで判断し、特定の条件を満たすリクエストのみをリダイレクトします。条件に基づいてリダイレクト先を区別する必要がある利用シーンに適しています。たとえば、ユーザーの言語設定に基づいて異なる言語バージョンのウェブサイトにリダイレクトしたり、デバイスタイプ (モバイル、タブレット、PC) やブラウザのバージョンに基づいてモバイルまたはデスクトップの HTTPS バージョンにリダイレクトしたりできます。
すべての HTTP リクエストの HTTPS へのリダイレクト
ステップ 1:HTTPS リスナーの設定
ALB コンソールの上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
ALB の インスタンス ページで、対象インスタンスの ID をクリックします。
リスナー タブで、[リスナーの作成] をクリックします。
Server Load Balancer を設定 ページで、次の設定を完了します。
ここでは、このトピックに関連するパラメーターのみをリストします。その他の HTTPS リスナーのパラメーターについては、デフォルト値を保持するか、実際のニーズに応じて設定してください。
[リスナーの設定] ステップで、リスナープロトコルの選択 を [HTTPS] に、リスナーポート を [443] に設定し、次へ をクリックします。

[SSL 証明書の設定] ステップで、作成したサーバー証明書を選択し、TLS セキュリティポリシーを選択します。その後、[次へ] をクリックします。
[サーバーグループの選択] ステップで、作成したサーバーグループを選択し、バックエンドサーバー情報を確認してから、[次へ] をクリックします。
[設定の確認] ステップで、設定情報を確認し、[送信] をクリックします。
ステップ 2:リスナー転送ルールの設定
リスナー タブで、HTTP リスナーを見つけ、操作 列の [転送ルールの表示/変更] をクリックします。
転送ルール タブで、新しいルールの追加 をクリックします。
転送ルールの追加 セクションで、次の表に従ってパラメーターを設定し、[OK] をクリックします。
ここでは、このトピックに関連するパラメーターのみをリストします。その他の転送ルールのパラメーターについては、デフォルト値を保持するか、実際のニーズに応じて設定してください。
パラメーター
説明
転送条件
[パス] を選択し、/* と入力します。
転送操作
[リダイレクト] を選択します。
[プロトコル]:この例では、[HTTPS] を選択します。
[ポート]:作成した HTTPS リスナーのポート番号を入力します。この例では、443 と入力します。
[ステータスコード]:この例では、デフォルト値の [301] を保持します。

ステップ 3:結果の検証
パブリックネットワークにアクセスできる任意の端末をテストクライアントとして使用し、ALB への HTTP リクエストが HTTPS にリダイレクトされるかどうかをテストします。
端末のコマンドラインインターフェイスを開きます。
curl -v -L http://<カスタムドメイン名>を実行します。次の図に示すように、ステータスコード 301 が受信され、ALB へのリクエストが HTTPS にリダイレクトされ、応答サーバーが ECS01 であることを示します。


コマンドを再度実行すると、応答サーバーが ECS02 に変わります。


HTTP ヘッダーに基づくリクエストのリダイレクト
次のセクションでは、Accept-Language ヘッダーの値が zh-CN,zh である HTTP リクエストを HTTPS にリダイレクトする方法を示します。
ステップ 1:HTTPS リスナーの設定
ALB コンソールの上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
ALB の インスタンス ページで、対象インスタンスの ID をクリックします。
リスナー タブで、[リスナーの作成] をクリックします。
Server Load Balancer を設定 ページで、次の設定を完了します。
ここでは、このトピックに関連するパラメーターのみをリストします。その他の HTTPS リスナーのパラメーターについては、デフォルト値を保持するか、実際のニーズに応じて設定してください。
[リスナーの設定] ステップで、リスナープロトコルの選択 を [HTTPS] に、リスナーポート を [443] に設定し、次へ をクリックします。

[SSL 証明書の設定] ステップで、作成したサーバー証明書を選択し、TLS セキュリティポリシーを選択します。その後、[次へ] をクリックします。
[サーバーグループの選択] ステップで、作成したサーバーグループを選択し、バックエンドサーバー情報を確認してから、[次へ] をクリックします。
[設定の確認] ステップで、設定情報を確認し、[送信] をクリックします。
ステップ 2:リスナー転送ルールの設定
リスナー タブで、HTTP リスナーを見つけ、操作 列の [転送ルールの表示/変更] をクリックします。
転送ルール タブで、新しいルールの追加 をクリックします。
転送ルールの追加 セクションで、次の表に従ってパラメーターを設定し、[OK] をクリックします。
ここでは、このトピックに関連するパラメーターのみをリストします。その他の転送ルールのパラメーターについては、デフォルト値を保持するか、実際のニーズに応じて設定してください。
パラメーター
説明
転送条件
[HTTP ヘッダー] を選択します。
[キー]:この例では、Accept-Language と入力します。
[値]:この例では、zh-CN,zh と入力します。
転送操作
[リダイレクト] を選択します。
[プロトコル]:この例では、[HTTPS] を選択します。
[ドメイン名]:カスタムドメイン名を入力します。
[ポート]:作成した HTTPS リスナーのポート番号を入力します。この例では、443 と入力します。
ステータスコード: この例では、[302]を選択します。

ステップ 3:結果の検証
パブリックネットワークにアクセスできる任意の端末をテストクライアントとして使用し、ALB への HTTP リクエストが HTTPS にリダイレクトされるかどうかをテストします。
端末のコマンドラインインターフェイスを開きます。
curl -v -L -H "Accept-Language: zh-CN,zh" http://<カスタムドメイン名>を実行します。次の図に示すように、ステータスコード 302 が受信され、ALB へのリクエストが HTTPS にリダイレクトされ、応答サーバーが ECS01 であることを示します。


コマンドを再度実行すると、応答サーバーが ECS02 に変わります。


リダイレクトのステータスコード
ALB リダイレクトのデフォルトの HTTP ステータスコードは 301 です。必要に応じて、別の HTTP ステータスコードを指定できます。次の表に、ALB がサポートする HTTP ステータスコードを示します:
HTTP ステータスコード | 説明 |
301 | 恒久的なリダイレクトを示します。リクエストされたリソースは新しい URL に恒久的に移動されます。クライアントからのすべてのリクエストで新しい URL を使用することが推奨されます。 |
302 | 一時的なリダイレクトを示します。リクエストされたリソースは一時的に移動されます。クライアントは元の URL を引き続き使用できます。 |
303 | 302 に似ており、一時的なリソースの移動を示します。元のリクエストメソッドに関係なく、クライアントはリダイレクトされたリクエストに GET メソッドを使用する必要があります。 |
307 | 302 に似ており、一時的なリソースの移動を示しますが、クライアントは元のリクエストメソッドを維持する必要があります (たとえば、POST リクエストはリダイレクト後も POST のままであり、POST から GET へのリダイレクトは許可されません)。 |
308 | 301 に似ており、恒久的なリソースの移動を示しますが、クライアントは元のリクエストメソッドを維持する必要があります (たとえば、POST リクエストはリダイレクト後も POST のままであり、POST から GET へのリダイレクトは許可されません)。 |
HTTP ステータスコードの詳細については、「HTTP/1.1 Standard (RFC 7231)」をご参照ください。
関連ドキュメント
ビジネスのセキュリティ要件が高い場合は、次の ALB 機能について詳しく学んでください:
データ転送のためのエンドツーエンドの HTTPS 暗号化の設定:ALB はエンドツーエンドの HTTPS 暗号化を提供し、クライアントと ALB 間、および ALB とバックエンドサーバー間の暗号化通信を可能にし、機密性の高いビジネスのセキュリティを強化します。
HTTPS リスナーでの相互認証の設定:ALB は HTTPS 相互認証をサポートしています。接続を確立する前に、クライアントとサーバーの両方が互いの ID を検証する必要があります。両者が認証に成功した場合にのみ、安全な通信チャネルが確立され、データ転送が行われます。これにより、承認されたクライアントのみがサービスにアクセスできるようになり、中間者攻撃や不正アクセスなどのセキュリティリスクを効果的に低減します。
リスナーの転送条件とアクションの詳細については、「リスナーの転送ルールの管理」をご参照ください。
ALB リスナーの転送ルールは、次の特定の要件も満たすことができます:
本番トラフィックのステージング環境へのミラーリング:ALB が提供するトラフィックミラーリング機能を使用して、本番トラフィックをステージング環境のバックエンドサーバーにミラーリングし、テスト目的で使用します。ALB は、ビジネスへの影響を防ぐために、テスト用のバックエンドサーバーから受信した応答を自動的に破棄します。
ALB を使用したカナリアリリースの実装:ALB リスナーに条件ベースまたはサーバーグループの重みベースの転送ルールを設定して、リクエストの一部を毎回新しいバージョンのアプリケーションにルーティングします。このプロセス中に、新しいバージョンの安定性を検証します。