Azure CLI で TLS 終端を使用してアプリケーション ゲートウェイを作成する

Azure CLI で TLS 終端の証明書を使用してアプリケーション ゲートウェイを作成できます。 バックエンド サーバーの場合は、仮想マシン スケール セットを使用できます。 この例では、アプリケーション ゲートウェイの既定のバックエンド プールに追加された 2 つの仮想マシン インスタンスがスケール セットに含まれています。

この記事では、次のことについて説明します。

  • 自己署名証明書の作成
  • ネットワークの設定
  • 証明書でのアプリケーション ゲートウェイの作成
  • 既定のバックエンド プールでの仮想マシン スケール セットの作成

好みに応じて、Azure PowerShell を使ってこの手順を実行することもできます。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • このチュートリアルには、Azure CLI のバージョン 2.0.4 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

自己署名証明書の作成

実際の運用では、信頼できるプロバイダーによって署名された有効な証明書をインポートする必要があります。 この記事では、openssl コマンドを使用して、自己署名証明書と pfx ファイルを作成します。

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out appgwcert.crt

証明書に対して意味のある値を入力します。 既定値をそのまま使用することもできます。

openssl pkcs12 -export -out appgwcert.pfx -inkey privateKey.key -in appgwcert.crt

証明書のパスワードを入力します。 この例では、Azure123456! が使用されています。

リソース グループを作成する

リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 az group create を使用してリソース グループを作成します。

次の例では、myResourceGroupAG という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroupAG --location eastus

ネットワーク リソースを作成する

az network vnet create を使用して、myVNet という名前の仮想ネットワークと myAGSubnet という名前のサブネットを作成します。 次に、az network vnet subnet create を使用して、バックエンド サーバーに必要な myBackendSubnet という名前のサブネットを追加できます。 az network public-ip create を使用して myAGPublicIPAddress という名前のパブリック IP アドレスを作成します。

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.0.1.0/24

az network vnet subnet create \
  --name myBackendSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --address-prefix 10.0.2.0/24

az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard \
  --location eastus

アプリケーション ゲートウェイの作成

az network application-gateway create を使用して、アプリケーション ゲートウェイを作成することができます。 Azure CLI を使用してアプリケーション ゲートウェイを作成するときは、容量、SKU、HTTP 設定などの構成情報を指定します。

このアプリケーション ゲートウェイを、先ほど作成した myAGSubnetmyAGPublicIPAddress に割り当てます。 この例では、アプリケーション ゲートウェイを作成するときに、作成した証明書とそのパスワードを関連付けます。

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGsubnet \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 443 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --priority "1" \
  --public-ip-address myAGPublicIPAddress \
  --cert-file appgwcert.pfx \
  --cert-password "Azure123456!"

アプリケーション ゲートウェイの作成には数分かかる場合があります。 アプリケーション ゲートウェイを作成すると、新たに次の機能が確認できます。

  • appGatewayBackendPool - アプリケーション ゲートウェイには、少なくとも 1 つのバックエンド アドレス プールが必要です。
  • appGatewayBackendHttpSettings - 通信に使用するポート 80 と HTTP プロトコルを指定します。
  • appGatewayHttpListener - appGatewayBackendPool に関連付けられている既定のリスナー。
  • appGatewayFrontendIP -myAGPublicIPAddressappGatewayHttpListener に割り当てます。
  • rule1 - appGatewayHttpListener に関連付けられている既定のルーティング規則。

仮想マシン スケール セットを作成する

この例では、アプリケーション ゲートウェイの既定のバックエンド プールにサーバーを提供する仮想マシン スケール セットを作成します。 スケール セット内の仮想マシンは、myBackendSubnetappGatewayBackendPool に関連付けられています。 スケール セットを作成するには、az vmss create を使用できます。

az vmss create \
  --name myvmss \
  --resource-group myResourceGroupAG \
  --image UbuntuLTS \
  --admin-username azureuser \
  --admin-password Azure123456! \
  --instance-count 2 \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --vm-sku Standard_DS2 \
  --upgrade-policy-mode Automatic \
  --app-gateway myAppGateway \
  --backend-pool-name appGatewayBackendPool

NGINX のインストール

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroupAG \
  --vmss-name myvmss \
  --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"],
  "commandToExecute": "./install_nginx.sh" }'

アプリケーション ゲートウェイのテスト

アプリケーション ゲートウェイのパブリック IP アドレスを取得するには、az network public-ip show を使用できます。

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

そのパブリック IP アドレスをコピーし、ブラウザーのアドレス バーに貼り付けます。 この例では、URL は https://52.170.203.149 です。

セキュリティに関する警告

自己署名証明書を使用した場合、セキュリティ警告を受け入れるには、そのまま [詳細] を選択し [Web ページへ移動] を選択します。 セキュリティで保護された NGINX サイトは、次の例のように表示されます。

アプリケーション ゲートウェイでのベース URL のテスト

リソースをクリーンアップする

必要がなくなったら、リソース グループ、アプリケーション ゲートウェイ、およびすべての関連リソースを削除します。

az group delete --name myResourceGroupAG --location eastus

次のステップ

複数の Web サイトをホストするアプリケーション ゲートウェイを作成する