Создание шлюза приложений с сертификатом с помощью Azure CLI

Вы можете создать шлюз приложений с сертификатом для выполнения функций моста TLS/SSL с помощью Azure CLI. Правило маршрутизации используется для перенаправления трафика HTTP в HTTPS-порт в шлюзе приложений. В этом примере также создается масштабируемый набор виртуальных машин для внутреннего пула шлюза приложений, содержащего два экземпляра виртуальных машин.

Вы узнаете, как выполнять следующие задачи:

  • Создание самозаверяющего сертификата
  • настройка сети;
  • создание шлюза приложений с сертификатом;
  • добавление прослушивателя и правила перенаправления;
  • Создание масштабируемого набора виртуальных машин с серверным пулом по умолчанию

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этим учебником требуется Azure CLI версии 2.0.4 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

Создание самозаверяющего сертификата

Для использования в рабочей среде следует импортировать действительный сертификат, подписанный доверенным поставщиком. В этом руководстве для создания самозаверяющего сертификата и PFX-файла используется команда openssl.

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

Создание сетевых ресурсов

Создайте виртуальную сеть с именем myVNet и подсеть myAGSubnet с помощью команды az network vnet create. Затем можно добавить подсеть с именем myBackendSubnet , необходимую серверным серверам, с помощью az network vnet subnet create. Создайте общедоступный IP-адрес с именем myAGPublicIPAddress, используя команду az network public-ip create.

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

Создание шлюза приложений

Выполните команду az network application-gateway create, чтобы создать шлюз приложений myAppGateway. При создании шлюза приложений с помощью Azure CLI укажите такие сведения о конфигурации, как емкость, номер SKU и параметры HTTP.

Шлюз приложений назначается подсети myAGSubnet и адресу myAGPublicIPAddress, созданным ранее. В этом примере нужно связать созданный сертификат и пароль при создании шлюза приложений.

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

Создание шлюза приложений может занять несколько минут. Когда шлюз приложений будет создан, вы увидите такие новые функции шлюза:

  • appGatewayBackendPool — шлюз приложений должен иметь по крайней мере один внутренний пул адресов.
  • appGatewayBackendHttpSettings — указывает, что для обмена данными используются порт 80 и протокол HTTP.
  • appGatewayHttpListener — прослушиватель по умолчанию, связанный с appGatewayBackendPool.
  • appGatewayFrontendIP — назначает адрес myAGPublicIPAddress для прослушивателя appGatewayHttpListener.
  • rule1 — правило маршрутизации по умолчанию, связанное с прослушивателем appGatewayHttpListener.

добавление прослушивателя и правила перенаправления;

Добавление HTTP-порта

С помощью команды az network application-gateway frontend-port create в шлюз приложений можно добавить HTTP-порт.

az network application-gateway frontend-port create \
  --port 80 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name httpPort

Добавление прослушивателя HTTP

С помощью команды az network application-gateway http-listener create в шлюз приложений можно добавить прослушиватель myListener.

az network application-gateway http-listener create \
  --name myListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port httpPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

Добавление конфигурации перенаправления

Добавьте в шлюз приложений конфигурацию перенаправления HTTP в HTTPS с помощью команды az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --name httpToHttps \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --type Permanent \
  --target-listener appGatewayHttpListener \
  --include-path true \
  --include-query-string true

Добавление правила маршрутизации

Добавьте в шлюз приложений правило маршрутизации rule2 с помощью команды az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name rule2 \
  --resource-group myResourceGroupAG \
  --http-listener myListener \
  --rule-type Basic \
  --redirect-config httpToHttps

Создание масштабируемого набора виртуальных машин

В этом примере создается масштабируемый набор виртуальных машин с именем myvmss, который предоставляет серверы для внутреннего пула в шлюзе приложений. Виртуальные машины в масштабируемом наборе связаны с подсетью myBackendSubnet и пулом appGatewayBackendPool. Чтобы создать масштабируемый набор, выполните команду az vmss create.

az vmss create \
  --name myvmss \
  --resource-group myResourceGroupAG \
  --image Ubuntu2204 \
  --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. Скопируйте общедоступный IP-адрес и вставьте его в адресную строку браузера.

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

Secure warning

Чтобы принять предупреждение системы безопасности, если используется самозаверяющий сертификат безопасности, выберите Сведения, а затем нажмите Перейти на веб-страницу. На экране отобразится защищенный веб-сайт NGINX, как в показано следующем примере:

Test base URL in application gateway

Следующие шаги