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


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

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

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

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Для работы с этой статьей требуется модуль Azure PowerShell 1.0.0 или более поздней версии. Чтобы узнать версию, выполните команду Get-Module -ListAvailable Az. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Login-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

Настройка интерфейсного протокола SSL

Настройте SSL-сертификаты для Шлюза приложений.

$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password

Настройка аутентификации клиента

Настройте проверку подлинности клиента в Шлюзе приложений. Дополнительные сведения о том, как извлечь цепочки сертификатов ЦС доверенного клиента для использования здесь, см. в статье, посвященной извлечению цепочки сертификатов ЦС доверенного клиента.

Внимание

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

Примечание.

Мы рекомендуем использовать протокол TLS версии 1.2 с взаимной проверкой подлинности, так как в будущем эта версия станет обязательной.

$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

Настройка серверного пула и параметров

Настройте серверный пул и параметры для Шлюза приложений. При необходимости настройте серверный доверенный корневой сертификат для сквозного шифрования 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

Настройка стандартной политики SSL для будущих прослушивателей

Вы настроили политику SSL для прослушивателя при настройке взаимной проверки подлинности. На этом шаге вы можете дополнительно задать стандартную политику 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
    

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