⛩️

Azure Application GatewayにおけるHTTPS化とHTTP > HTTPSのリダイレクト

2023/04/14に公開

モチベ

  • 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://learn.microsoft.com/ja-jp/azure/active-directory/develop/howto-create-self-signed-certificate#optional-export-your-public-certificate-with-its-private-key

  • 作成した秘密鍵付きの証明書を使ってHTTPS用のリスナーを作成

  • バックエンドターゲットは共通のバックエンドプールを指定

  • バックエンド設定はHTTPのままにする

    • HTTPにするとAppGWでTLS終端をする構成となる=AppGW-バックエンド間は暗号化しない
    • ここをHTTPSにするとE2EのTLS暗号化がされることになる
      • バックエンドサーバ側の公開キー証明書を利用して、AppGW-バックエンド間を再暗号化するということ
  • ここまでで、HTTPSでのアクセスもできるようになっているはずなので、ブラウザからHTTPSでアクセス

    • いちおうアクセスできるが警告が出る
    • 今回はCA証明書ではなく、自己署名証明書(いわゆるオレオレ証明書)なので、信頼されていないことによるものなのでOK
    • Azure Portalで登録した証明書名が認識されている
  • 詳細を開くとよくわかる

  • 承知の上でリンクをクリックするとApacheのページが表示される

HTTP > HTTPのリダイレクト

  • 基本的には特殊な要件がない限り、インターネット上ではHTTPSを利用することが推奨される
  • よって、Application Gatewayではリスナーから別のリスナーへリダイレクトする機能を持っている

https://learn.microsoft.com/ja-jp/azure/application-gateway/redirect-overview

  • HTTPリスナーに紐づいているルールを削除する

    • 削除してからじゃないと新しいルールを割り当てられない
  • 新規でリダイレクト用のルールを作成し、ターゲットをHTTPSリスナーに設定する

  • この状態でフロントのPIPにHTTPでアクセスしてみると、HTTPSにリダイレクトされることが分かる

HTTPリスナーを削除したらどうなるか

  • そもそもHTTPでアクセスさせないようにHTTP側のリスナーを削除すればいいのではないかという点でも確認

  • 想定通り、HTTPでのアクセスは単純にレスポンスを返さなかった(アクセス不可)

  • HTTPリスナーは削除したほうが良いんか?よくリダイレクトさせてる例を見るけど、、、というお気持ち

気になったので、ChatGPTに聞いてみた

※調べるのが面倒だったので、真偽は保証できないです、スミマセン。たぶんあってそうだけど。

したがって、常にHTTPSリスナーのみでリクエストを受け付けることが推奨されます。ただし、既存のWebサイトがHTTPである場合は、HTTPSに移行する前にHTTPリスナーを一時的に設け、HTTPからHTTPSへの移行を促すためのリダイレクトを行うことが一般的です。


したがって、Azure Application GatewayのHTTPSリスナーには、信頼された証明書を使用することが必須であり、リダイレクト時の通信も暗号化されます。

全体を通して非常に納得できる回答だ。ありがとう。

おわり

ChatGPTの回答、かなりそれっぽいけど、結局信憑性の観点で応用難しいな~。

GitHubで編集を提案
Microsoft (有志)

Discussion