[Azure] Application Gateway v1 で構築検証してみる（E2E TLS/パスベース規則）②

Application Gatewayの構築検証記事②です。
第1回では、構築する構成図と事前準備について記載しました。
　→　URL：https://qiita.com/ninob/items/e8d883a69cb4069abee1

第2回の今回は、Application Gatewayの作成と、ルール①の設定でエンドツーエンドのTLS化を行います。（下図赤枠）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/6670d58f-8de6-d87a-6fd4-5ce09e458445.png)
前手順で作成した以下の証明書ファイルを準備しておきます。
・PFX証明書（クライアント⇒Application Gateway間の通信復号化用。リスナーに登録）
・CER証明書（Application Gateway⇒バックエンドサーバ間の通信暗号化用。HTTP設定に登録）

## Application Gateway作成（リスナーのTLS化含む）
Application Gatewayのメニューにて「作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/bb190892-e032-3f10-f053-6c4da6527aa7.png)
"基本"タブでSKUやネットワーク設定を行い「次:フロントエンドの数」へ。
今回はStandard v1 SKUを使用し、本稼働用の最小構成とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ed57c716-d890-7aff-c436-4609b2f02369.png)
"フロントエンドの数"タブでフロントエンドIPを設定し「次:バックエンド」へ
今回はパブリックIPを設定しない構成とします。（Standard v2 SKUではパブリックIPが必須です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/7ee53a88-d864-f506-9b62-24cfe28e0fc2.png)
"バックエンド"タブでバックエンドのサーバを設定します。
「バックエンドプールの追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/3ed5c898-20b4-3501-f0a0-4b98a150fdcd.png)
まずはHTTPS通信先の犬システム（nino-ap01,nino-ap02）を追加し、画面下部の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/2487c790-1c83-b832-8974-0375be7f560f.png)
設定が追加されたことを確認し「次:構成」へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ba442b51-769f-834c-ef79-30ba145d2e99.png)
"構成"タブでルーティング規則を設定します。
「ルーティング規則の追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/99493360-e5b6-6672-cc43-73503a34ebb9.png)
ルーティング規則の名前とリスナー（クライアントからの要求規則）を設定します。
赤枠の設定にて"HTTPSで「dogs.test.co.jp」に対するアクセスを処理する"設定としています。
またHTTPS設定欄にて、事前準備で作成したPFXファイルをアップロードします。
※"エラーページのURL"の設定は、第3回でご説明します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/5467a0a5-378f-c7a9-ea96-5c73ab0581ac.png)
「バックエンドターゲット」タブに移り、前画面で設定した犬システムのバックエンドプールを指定します。
またHTTP設定を追加するために、「新規追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/bf1dcb51-cc64-f8e7-ad27-a418b1d601dc.png)
バックエンドサーバに対してアクセスするプロトコル等を設定します。
ここでTLS化する場合は作成した証明書（CERファイル）をアップロードします。
が、なぜかここでは証明書の名前を設定できないので、いったんHTTPの設定で追加し、後で修正します。
またカスタムプローブの設定もグレーアウトされているので、後ほど必要に応じて設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/71b00a54-1005-92ba-70d9-90051a62e844.png)
これでルーティング規則の設定が終わったので、内容を確認し画面下部の「追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/0d612fbf-12cd-3db4-2fb9-58c06474bd6d.png)
Application Gatewayの構成が完了したので、「次:タグ」へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/461f41cb-12c8-261c-3216-5f3c10edc37b.png)
タグを設定し、「次:確認および作成」へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/34aa7ffd-ac4e-eeb7-6ce9-9fa087d91a73.png)
設定内容に問題なければ「作成」をクリック
※構成内容は表示されないので、前画面までできちんと確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/3b3ad96c-0952-334e-82fe-019fe738a00f.png)
作成完了まで30分弱かかりました。Application Gatewayは作成も更新も遅いです。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/4eca8edb-5478-2edf-2698-1f889802eced.png)

## バックエンドへの通信のTLS化
先ほど仮で設定したHTTP設定を修正していきます。
設定⇒HTTP設定メニューから、先ほど設定した「HTTPS-Setting」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/d9b83417-d4d9-c43b-07c3-e3970f2fa5d5.png)
プロトコルをHTTPSに修正し、CER証明書をアップロードして「証明書の追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/2166eb7c-1c87-7e31-bcdd-7bc2358050d9.png)
CER証明書のアップロード完了後、他の設定も見直し「保存」します。
※例えば、Cookieによって接続サーバを固定化したい場合は、「Cookieベースのアフィニティ」を有効化し、Application Gatewayで処理するCookie名を設定します。
　（バックエンドのアプリケーションで処理するCookie名ではないので注意）
※カスタムプローブについては後述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ff0dbe72-518c-5996-adb2-6aafaffb551b.png)
これで設定完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/b0b79571-3eec-8bf1-c803-57a18bf80c7f.png)

## カスタムプローブの設定
必要に応じてカスタムプローブを設定します。
　※既定のプローブと、カスタムプローブの説明は[こちら](https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-probe-overview)を参照。
設定⇒正常性プローブメニューから、「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ef26ad2c-98c9-fbfa-4640-3839459b9dda.png)
監視を行うパスや監視間隔等を設定し、画面下部の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/0bfafc96-9f64-336e-b576-29d71273e0bb.png)
正常性プローブが追加されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/e98ea1a3-71c9-17b8-cd2c-74ba4c5bf99a.png)
先ほどの「HTTPS-Setting」を開き、画面下部のカスタムプローブの設定を更新し「保存」
・カスタムプローブの使用：はい
・カスタムプローブ：先ほど作成したプローブ名を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/83f5dd2f-692f-c7da-9a89-a9418afdd1b2.png)
監視⇒バックエンド正常性メニューを開き、プローブの状態を確認します。
状態が「健全」になっていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/a5946187-82da-cf58-e7f9-471079c3aa6e.png)
犬用URLへアクセスしてみます。（https://dogs.test.co.jp/dogs/start.htm）
HTTPSで接続し、正常に犬画像が表示されたことを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/cb3846ae-0508-b15f-d720-0d64bd61aa9e.png)

これで1つめの要件は設定完了です。
次回は2つめの要件として、パスベースの規則を設定します。
第3回URL：https://qiita.com/ninob/items/167beb82fff74f7f6b0d