Configurar a autenticação mútua com o Application Gateway por meio do PowerShell

Este artigo descreve como usar o PowerShell para configurar a autenticação mútua em seu Gateway de Aplicativo. Autenticação mútua significa que o Application Gateway autentica o cliente que envia a solicitação usando o certificado de cliente carregado no Application Gateway.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Este artigo requer o módulo do Azure PowerShell versão 1.0.0 ou posterior. Executar Get-Module -ListAvailable Az para localizar a versão. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Se você estiver executando o PowerShell localmente, também precisará executar Login-AzAccount para criar uma conexão com o Azure.

Antes de começar

Para configurar a autenticação mútua com um Application Gateway, você precisa de um certificado de cliente para carregar no gateway. O certificado do cliente será usado para validar o certificado que o cliente apresentará ao Application Gateway. Para fins de teste, você pode usar um certificado autoassinado. No entanto, isso não é recomendado para cargas de trabalho de produção, porque elas são mais difíceis de gerenciar e não são completamente seguras.

Para saber mais, especialmente sobre que tipo de certificados de cliente você pode carregar, consulte Visão geral da autenticação mútua com o Application Gateway.

Criar um grupo de recursos

Primeiro, crie um novo grupo de recursos na sua assinatura.

$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}

Criar uma rede virtual

Implante uma rede virtual para o seu Application Gateway a ser implantado.

$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

Criar um IP público

Crie um IP público para usar com seu Application Gateway.

$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard

Criar a configuração IP do Application Gateway

Crie as configurações de IP e a porta frontend.

$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName  -Port 443

Configurar SSL frontend

Configure os certificados SSL para seu Application Gateway.

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

Configurar a autenticação de cliente

Configure a autenticação do cliente no seu Application Gateway. Para obter mais informações sobre como extrair cadeias de certificados de CA de cliente confiável para usar aqui, consulte como extrair cadeias de certificados de CA de cliente confiável.

Importante

Certifique-se de carregar toda a cadeia de certificados da autoridade de certificação do cliente em um arquivo e apenas uma cadeia por arquivo.

Nota

Recomendamos o uso do TLS 1.2 com autenticação mútua, pois o TLS 1.2 será obrigatório no futuro.

$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

Definir o pool de back-end e as configurações

Configure o pool de back-end e as configurações para seu Application Gateway. Opcionalmente, configure o certificado raiz confiável de back-end para criptografia SSL de ponta a ponta.

$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

Configurar a regra

Configure uma regra no seu Application Gateway.

$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

Configurar a política SSL padrão para ouvintes futuros

Você configurou uma política SSL específica do ouvinte ao configurar a autenticação mútua. Nesta etapa, você pode, opcionalmente, definir a política SSL padrão para ouvintes futuros que criar.

$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"

Criar o gateway de aplicativo

Usando tudo o que criamos acima, implante seu Application Gateway.

$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

Clean up resources (Limpar recursos)

Quando não for mais necessário, remova o grupo de recursos, o gateway de aplicativo e todos os recursos relacionados usando Remove-AzResourceGroup.

Remove-AzResourceGroup -Name $rgname

Renovar certificados de CA de cliente expirados

Caso o certificado da autoridade de certificação do cliente tenha expirado, você pode atualizá-lo no gateway por meio das seguintes etapas:

  1. Entrar no Azure
    Connect-AzAccount
    Select-AzSubscription -Subscription "<sub name>"
    
  2. Obtenha a configuração do Application Gateway
    $gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
    
  3. Remover o certificado de cliente confiável do gateway
    Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
    
  4. Adicionar o novo certificado ao gateway
    Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
    
  5. Atualizar o gateway com o novo certificado
    Set-AzApplicationGateway -ApplicationGateway $gateway
    

Próximos passos