Azure Application GatewayにおけるHTTPS化とHTTP > HTTPSのリダイレクト
モチベ
- Azure Application GatewayってどうやってHTTPS利用するんだっけ
- 検証環境もHTTPにとどめてしまうことが多い
- 証明書周りとか苦手意識がある
- そもそもあんまりAzure Application Gatewayのこと知らないから触っておきたい
リソース
Application Gateway
- AppGWを作成、何となくゾーン冗長で作成
- AppGWがゾーン冗長なのでパブリックIPもゾーン冗長になる
- 一旦リスナーはHTTPで作成
- configも適当に作る
VM
- これでいったんAppGWのデプロイは完了したので、バックエンドプールに入れるUbuntuVMを作成
- 作成後、SSH接続してApacheをインストール
$ sudo apt update
$ sudo apt install apache2
-
インストール出来たら、バックエンドプールにVMを登録
-
この時点で一旦AppGatewayのフロントPIPにHTTPでアクセスしてみると、確かにApacheのページが表示される
- これをHTTPS化していきたい
- これをHTTPS化していきたい
証明書の取得
- 秘密鍵付きの証明書を作成
-
作成した秘密鍵付きの証明書を使ってHTTPS用のリスナーを作成
-
バックエンドターゲットは共通のバックエンドプールを指定
-
バックエンド設定はHTTPのままにする
- HTTPにするとAppGWでTLS終端をする構成となる=AppGW-バックエンド間は暗号化しない
- ここをHTTPSにするとE2EのTLS暗号化がされることになる
- バックエンドサーバ側の公開キー証明書を利用して、AppGW-バックエンド間を再暗号化するということ
- バックエンドサーバ側の公開キー証明書を利用して、AppGW-バックエンド間を再暗号化するということ
-
ここまでで、HTTPSでのアクセスもできるようになっているはずなので、ブラウザからHTTPSでアクセス
- いちおうアクセスできるが警告が出る
- 今回はCA証明書ではなく、自己署名証明書(いわゆるオレオレ証明書)なので、信頼されていないことによるものなのでOK
- Azure Portalで登録した証明書名が認識されている
-
詳細を開くとよくわかる
-
承知の上でリンクをクリックするとApacheのページが表示される
HTTP > HTTPのリダイレクト
- 基本的には特殊な要件がない限り、インターネット上ではHTTPSを利用することが推奨される
- よって、Application Gatewayではリスナーから別のリスナーへリダイレクトする機能を持っている
-
HTTPリスナーに紐づいているルールを削除する
- 削除してからじゃないと新しいルールを割り当てられない
- 削除してからじゃないと新しいルールを割り当てられない
-
新規でリダイレクト用のルールを作成し、ターゲットをHTTPSリスナーに設定する
-
この状態でフロントのPIPにHTTPでアクセスしてみると、HTTPSにリダイレクトされることが分かる
HTTPリスナーを削除したらどうなるか
-
そもそもHTTPでアクセスさせないようにHTTP側のリスナーを削除すればいいのではないかという点でも確認
-
想定通り、HTTPでのアクセスは単純にレスポンスを返さなかった(アクセス不可)
-
HTTPリスナーは削除したほうが良いんか?よくリダイレクトさせてる例を見るけど、、、というお気持ち
気になったので、ChatGPTに聞いてみた
※調べるのが面倒だったので、真偽は保証できないです、スミマセン。たぶんあってそうだけど。
したがって、常にHTTPSリスナーのみでリクエストを受け付けることが推奨されます。ただし、既存のWebサイトがHTTPである場合は、HTTPSに移行する前にHTTPリスナーを一時的に設け、HTTPからHTTPSへの移行を促すためのリダイレクトを行うことが一般的です。
したがって、Azure Application GatewayのHTTPSリスナーには、信頼された証明書を使用することが必須であり、リダイレクト時の通信も暗号化されます。
全体を通して非常に納得できる回答だ。ありがとう。
おわり
ChatGPTの回答、かなりそれっぽいけど、結局信憑性の観点で応用難しいな~。
Discussion