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