Configurar a autenticação mútua com o Gateway de Aplicativo 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 um gateway de aplicativo autentica o cliente que envia a solicitação usando o certificado do cliente que você carrega no gateway de aplicativo.

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

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, confira Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Este artigo requer o módulo Azure PowerShell versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az para encontrar a versão. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Login-AzAccount para criar uma conexão com o Azure.

Antes de começar

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

Para mais informações, especialmente sobre o tipo de certificados de cliente que você pode carregar, consulte visão geral da autenticação mútua com o gateway de aplicativo.

Criar um grupo de recursos

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

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

Criar uma rede virtual

Implante uma rede virtual para o gateway de aplicativo a ser implantado no.

$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 o seu gateway de aplicativo.

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

Criar a configuração de IP do gateway de aplicativo

Criar as configurações de IP e porta de front-end.

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

Configurar o SSL de front-end

Configure os certificados SSL para o seu gateway de aplicativo.

$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 do cliente

Configure a autenticação de cliente no seu gateway de aplicativo. Para mais informações sobre como extrair cadeias de certificados de AC de cliente confiáveis para usar aqui, consulte como extrair cadeias de certificados de AC de cliente confiáveis.

Importante

Verifique se você carregou toda a cadeia de certificados de autoridade de certificação do cliente em um arquivo e em apenas uma cadeia por arquivo.

Observação

É recomendável usar o 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

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

Configure o pool de back-end e as configurações para o seu gateway de aplicativo. Opcionalmente, configure o certificado raiz confiável de back-end para a 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 gateway de aplicativo.

$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 você criar.

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

Criar o Application Gateway

Usando tudo o que criamos acima, implante o gateway de aplicativo.

$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

Limpar os recursos

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

Remove-AzResourceGroup -Name $rgname

Renovar certificados de AC de cliente expirados

Caso o certificado de autoridade de certificação do cliente tenha expirado, você pode atualizar o certificado em seu gateway por meio das seguintes etapas:

  1. Entrar no Azure
    Connect-AzAccount
    Select-AzSubscription -Subscription "<sub name>"
    
  2. Faça a configuração do gateway de aplicativo
    $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 no 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óximas etapas