Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать PowerShell для настройки взаимной проверки подлинности в шлюзе приложений. Взаимная проверка подлинности означает, что шлюз приложений проходит проверку подлинности клиента, отправляя запрос с помощью сертификата клиента, который вы отправляете в шлюз приложений.
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.
Для этой статьи требуется модуль Azure PowerShell версии 1.0.0 или более поздней версии. Чтобы узнать версию, выполните команду Get-Module -ListAvailable Az. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Connect-AzAccount, чтобы создать подключение к Azure.
Перед тем как начать
Чтобы настроить взаимную проверку подлинности с помощью шлюза приложений, требуется сертификат клиента для отправки в шлюз. Сертификат клиента используется для проверки сертификата, который клиент представляет шлюзу приложений. Для тестирования можно использовать самозаверяющий сертификат. Однако это не рекомендуется для продуктивных рабочих нагрузок, так как ими сложнее управлять и не являются полностью безопасными.
Дополнительные сведения о том, какие сертификаты клиента можно отправить, см. в разделе "Обзор взаимной проверки подлинности с помощью шлюза приложений".
Создайте группу ресурсов
Сначала создайте новую группу ресурсов в подписке.
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
Создание виртуальной сети
Разверните виртуальную сеть для развертывания шлюза приложений.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet
$vnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -VirtualNetwork $vnet
Создание общедоступного IP-адреса
Создайте общедоступный IP-адрес для использования с шлюзом приложений.
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard
Создание IP-конфигурации шлюза приложений
Создайте конфигурации IP-адресов и внешний порт.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName -Port 443
Настройка внешнего протокола TLS/SSL
Настройте СЕРТИФИКАТЫ TLS/SSL для шлюза приложений.
$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password
Настройка проверки подлинности клиента
Настройте проверку подлинности клиента в шлюзе приложений. Дополнительные сведения о том, как извлечь цепочки сертификатов клиентского доверенного ЦС для использования здесь, см. в разделе извлечение цепочек сертификатов клиентского доверенного ЦС.
Это важно
Убедитесь, что вы отправляете всю цепочку сертификатов ЦС клиента в одном файле и только одну цепочку на файл. Максимальный размер каждого отправленного файла должен составлять 25 КБ или меньше.
Примечание.
Мы рекомендуем использовать TLS 1.2 с взаимной проверкой подлинности, так как TLS 1.2 станет обязательным с 31 августа 2025 года.
$clientCertFilePath = $basedir + "/ScenarioTests/Data/TrustedClientCertificate.cer"
$trustedClient01 = New-AzApplicationGatewayTrustedClientCertificate -Name $trustedClientCert01Name -CertificateFile $clientCertFilePath
$sslPolicy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401S"
$clientAuthConfig = New-AzApplicationGatewayClientAuthConfiguration -VerifyClientCertIssuerDN
$sslProfile01 = New-AzApplicationGatewaySslProfile -Name $sslProfile01Name -SslPolicy $sslPolicy -ClientAuthConfiguration $clientAuthConfig -TrustedClientCertificates $trustedClient01
$listener = New-AzApplicationGatewayHttpListener -Name $listenerName -Protocol Https -SslCertificate $sslCert -FrontendIPConfiguration $fipconfig -FrontendPort $port -SslProfile $sslProfile01
Настройте серверный пул и параметры
Настройте серверный пул и параметры шлюза приложений. При необходимости настройте внутренний доверенный корневой сертификат для сквозного шифрования TLS/SSL.
$certFilePath = $basedir + "/ScenarioTests/Data/ApplicationGatewayAuthCert.cer"
$trustedRoot = New-AzApplicationGatewayTrustedRootCertificate -Name $trustedRootCertName -CertificateFile $certFilePath
$pool = New-AzApplicationGatewayBackendAddressPool -Name $poolName -BackendIPAddresses www.microsoft.com, www.bing.com
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name $poolSettingName -Port 443 -Protocol Https -CookieBasedAffinity Enabled -PickHostNameFromBackendAddress -TrustedRootCertificate $trustedRoot
Настройка правила
Настройте правило в шлюзе приложений.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
Настройка политики TLS/SSL по умолчанию для будущих прослушивателей
Вы настроили политику TLS/SSL, специфичную для прослушивателя, при настройке взаимной проверки подлинности. На этом шаге можно при необходимости задать политику TLS/SSL по умолчанию для будущих прослушивателей.
$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"
Создание шлюза приложений
Используя все, что мы создали, разверните шлюз приложений.
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname -Zone 1,2 -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $port -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslPolicy $sslPolicyGlobal -TrustedRootCertificate $trustedRoot -AutoscaleConfiguration $autoscaleConfig -TrustedClientCertificates $trustedClient01 -SslProfiles $sslProfile01 -SslCertificates $sslCert
Очистка ресурсов
Если они больше не нужны, удалите группу ресурсов, шлюз приложений и все связанные ресурсы, используя командлет Remove-AzResourceGroup.
Remove-AzResourceGroup -Name $rgname
Продление сертификатов ЦС клиента с истекшим сроком действия
В случае истечения срока действия сертификата ЦС клиента можно обновить сертификат на шлюзе, выполнив следующие действия.
- Вход в Azure
Connect-AzAccount Select-AzSubscription -Subscription "<sub name>" - Получите конфигурацию вашего шлюза приложений
$gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>" - Удаление доверенного сертификата клиента из шлюза
Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway - Добавление нового сертификата в шлюз
Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>" - Обновление шлюза с помощью нового сертификата
Set-AzApplicationGateway -ApplicationGateway $gateway