ALBへのHTTPアクセスをHTTPSにリダイレクトしてみた

AWS
この記事は約4分で読めます。

こんにちは!大崎です!
みなさんはALBへのアクセスをHTTPSのみに統一したいと考えたことはないでしょうか?
「HTTPSへのリダイレクト設定がわからない…」
今回はそんな疑問にお答えします。

本記事でわかること

  • リダイレクトとは
  • リダイレクトの設定方法
  • 動作検証

リダイレクトとは

リダイレクト(Redirect)とは、ユーザーがアクセスしたURLから、別のURLに自動的に転送する仕組みです。

リダイレクトの中でもよく利用される設定の一つとして「暗号化されていない通信(HTTP)を、暗号化された通信(HTTPS)にリダイレクトする」があげられます。

HTTPSはSSL/TLSによって通信が暗号化されるため、盗聴や改ざんを防止できます。
パスワードや個人情報の送信時に安全な通信を実現することができ、HTTPに比べてセキュリティ面で大きなメリットを得ることができます。

リダイレクトの設定方法

事前準備:HTTPS リスナーを持つ ALB を用意する

HTTP から HTTPS へのリダイレクト設定を行う前に、リダイレクト先となる HTTPS の受け皿をあらかじめ用意しておく必要があります。
この役割を担うのが、
「HTTPS リスナー(ポート 443)を持つ Application Load Balancer(ALB)」
です。

なぜ事前に HTTPS リスナーが必要なのか?

HTTP → HTTPS リダイレクトは、ALB の HTTP(ポート 80)リスナー側のルールで設定します。
このとき ALB は、単に URL を書き換えているわけではなく、
「受け取ったリクエストを HTTPS(443)で改めてアクセスさせる」
という指示をクライアント(ブラウザなど)に返しています。

そのため、リダイレクト先である HTTPS が正しく待ち受け状態になっていることが前提になります。
HTTPS リスナーが存在しない状態でリダイレクト設定を入れてしまうと、アクセス先が存在しないため、結果的にエラーになります。

リダイレクトの設定方法

以下の手順でリダイレクト設定を行います。

①「リスナーとルール」タブの「リスナーの追加」を選択する。

②リダイレクト元のHTTPのリスナーを作成します。アクションのルーティングを「URLにリダイレクト」、プロトコルを「HTTPS(ポート番号は対象のHTTTPSのポート番号)」に設定します。(その他の設定値はデフォルトで問題ありません。)

③画面下部の「リスナーの追加」を選択します。

④以上でリダイレクト設定が完了です。

動作検証

まずはcurlコマンドでHTTPへアクセスしてみます。
(今回はテスト用にvpn.example.comというサーバを構築しています。)

C:\Windows\System32>curl -k http://vpn.example.com
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>

HTTPステータスコードで301が返ってきました。
HTTP 301 Moved Permanentlyと表示されていることから、
リクエストされたリソースが新しいURLに移動したことが確認できます。
念のためブラウザでも確認します。まずHTTPでアクセスします。

すると以下のように自動的にHTTPSのアクセスへ遷移されます。無事にリダイレクトされていることが確認できました。

まとめ

今回は、ALBへのHTTPアクセスをHTTPSにリダイレクトする方法についてご紹介しました。
上記の対応を行うことで、暗号化通信を強制することができ、盗聴や改ざんを防止できます。
運用やシステム構成に合わせて、ぜひこの仕組みを活用してみてください。

コメント

タイトルとURLをコピーしました