Поделиться через


Настройка взаимной проверки подлинности с помощью шлюза приложений с помощью PowerShell

В этой статье описывается, как использовать 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

Продление сертификатов ЦС клиента с истекшим сроком действия

В случае истечения срока действия сертификата ЦС клиента можно обновить сертификат на шлюзе, выполнив следующие действия.

  1. Вход в Azure
    Connect-AzAccount
    Select-AzSubscription -Subscription "<sub name>"
    
  2. Получите конфигурацию вашего шлюза приложений
    $gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
    
  3. Удаление доверенного сертификата клиента из шлюза
    Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
    
  4. Добавление нового сертификата в шлюз
    Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
    
  5. Обновление шлюза с помощью нового сертификата
    Set-AzApplicationGateway -ApplicationGateway $gateway
    

Дальнейшие действия