Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Overview
Gateway de Aplicativo do Azure suporta criptografia de ponta a ponta do tráfego. O Gateway de Aplicação termina a conexão TLS/SSL no gateway de aplicação. O gateway então aplica as regras de roteamento ao tráfego, recriptografa o pacote e encaminha o pacote para o servidor backend apropriado com base nas regras de roteamento definidas. Qualquer resposta do servidor Web passa pelo mesmo processo de volta para o usuário final.
O Application Gateway suporta a definição de opções TLS personalizadas. Também suporta a desativação das seguintes versões do protocolo: TLSv1.0, TLSv1.1 e TLSv1.2, além de definir quais conjuntos de cifras usar e a ordem de preferência. Para saber mais sobre as opções configuráveis de TLS, acesse Visão geral da política de TLS.
Note
SSL 2.0 e SSL 3.0 são desativados por padrão e não podem ser ativados. Eles são considerados inseguros e não podem ser usados com o Application Gateway.
Scenario
Nesse cenário, você aprende a criar um gateway de aplicação usando TLS de ponta a ponta com PowerShell.
Este cenário irá:
- Crie um grupo de recursos chamado appgw-rg.
- Crie uma rede virtual chamada appgwvnet com um espaço de endereçamento 10.0.0.0/16.
- Crie duas sub-redes chamadas appgwsubnet e appsubnet.
- Crie um pequeno gateway de aplicação que suporte criptografia TLS de ponta a ponta que limite versões do protocolo TLS e suítes de cifras.
Antes de começar
Note
Recomendamos que você use o módulo Azure Az PowerShell para interagir com Azure. Para começar, consulte Instalar Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Para configurar TLS de ponta a ponta com um gateway de aplicação, é necessário um certificado para o gateway e certificados para os servidores backend. O certificado de gateway é usado para derivar uma chave simétrica conforme a especificação do protocolo TLS. A chave simétrica é então usada para criptografar e descriptografar o tráfego enviado ao gateway. O certificado do gateway precisa estar no formato Personal Information Exchange (PFX). Esse formato de arquivo permite exportar a chave privada exigida pelo gateway de aplicação para realizar a criptografia e descriptografia do tráfego.
Para criptografia TLS de ponta a ponta, o back-end deve ser explicitamente permitido pelo gateway de aplicação. Envie o certificado público dos servidores backend para o gateway da aplicação. A adição do certificado garante que o gateway de aplicativo se comunique somente com instâncias de back-end conhecidas. Isso protege ainda mais a comunicação de ponta a ponta.
O processo de configuração é descrito nas seções a seguir.
Criar o grupo de recursos
Esta seção guia você na criação de um grupo de recursos que contenha o gateway da aplicação.
Entre em sua conta do Azure.
Connect-AzAccountSelecione a assinatura para usar nesse cenário.
Select-Azsubscription -SubscriptionName "<Subscription name>"Crie um grupo de recursos. (Pule essa etapa se você estiver usando um grupo de recursos já existente.)
New-AzResourceGroup -Name appgw-rg -Location "West US"
Criar uma rede virtual e uma sub-rede para o gateway de aplicativo
O exemplo a seguir cria uma rede virtual e duas sub-redes. Uma sub-rede é usada para armazenar o gateway de aplicação. A outra sub-rede é usada para os back-ends que hospedam a aplicação web.
Atribua um intervalo de endereços para a sub-rede a ser usada no gateway de aplicação.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -AddressPrefix 10.0.0.0/24Note
Dimensione corretamente as sub-redes configuradas para um gateway de aplicação. Um gateway de aplicação v1 suporta até 32 instâncias, enquanto um gateway de aplicação v2 escala para até 125 instâncias. Cada instância pega um endereço IP da sub-rede, então dimensione a sub-rede para acomodar a escalabilidade máxima para seu SKU. Uma sub-rede muito pequena pode afetar negativamente a ampliação de um gateway de aplicação. Para autoscaling v2 e limites de instância, veja Escalar Application Gateway v2 e WAF v2.
Atribua um intervalo de endereços a ser usado para o pool de endereços do backend.
$nicSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -AddressPrefix 10.0.2.0/24Crie uma rede virtual com as sub-redes definidas nos passos anteriores.
$vnet = New-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnetRecupere o recurso de rede virtual e os recursos de sub-rede para serem usados nas etapas seguintes.
$vnet = Get-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -VirtualNetwork $vnet $nicSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -VirtualNetwork $vnet
Crie um endereço IP público para a configuração frontend
Crie um recurso IP público para ser usado no gateway de aplicação. Esse endereço IP público é usado em uma das etapas que seguem.
$publicip = New-AzPublicIpAddress -ResourceGroupName appgw-rg -Name 'publicIP01' -Location "West US" -AllocationMethod Dynamic
Importante
O Application Gateway não suporta o uso de um endereço IP público criado com um rótulo de domínio definido. Somente um endereço IP público com um rótulo de domínio criado dinamicamente é suportado. Se você precisar de um nome DNS amigável para o gateway de aplicação, recomendamos que use um registro CNAME como alias.
Criar um objeto de configuração de gateway de aplicação
Todos os itens de configuração são definidos antes de criar o gateway de aplicação. Os passos a seguir criam os itens de configuração necessários para um recurso de gateway de aplicação.
Crie uma configuração de IP de gateway de aplicação. Essa configuração configura quais sub-redes o gateway de aplicação utiliza. Quando o gateway de aplicação inicia, ele capta um endereço IP da sub-rede configurada e roteia o tráfego de rede para os endereços IP no pool de IP do backend. Tenha em mente que cada instância usa um endereço IP.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnetCrie uma configuração de IP frontend. Essa configuração mapeia um endereço IP privado ou público para a interface do gateway de aplicação. A etapa seguinte associa o endereço IP público da etapa anterior à configuração do IP frontend.
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicipConfigure o pool de endereços IP do backend com os endereços IP dos servidores web do backend. Esses endereços IP são os endereços IP que recebem o tráfego de rede que vem do endpoint IP frontend. Substitua os endereços IP do exemplo pelos seus próprios endpoints de endereços IP de aplicação.
$pool = New-AzApplicationGatewayBackendAddressPool -Name 'pool01' -BackendIPAddresses 203.0.113.1, 203.0.113.2, 203.0.113.3Note
Um nome de domínio totalmente qualificado (FQDN) também é um valor válido para usar no lugar de um endereço IP para os servidores backend. Você habilita usando o switch -BackendFqdns .
Configure a porta IP frontend para o endpoint de IP público. Essa porta é a que os usuários finais se conectam.
$fp = New-AzApplicationGatewayFrontendPort -Name 'port01' -Port 443Configure o certificado para o gateway de aplicação. Esse certificado é usado para descriptografar e recriptografar o tráfego no gateway de aplicação.
$passwd = ConvertTo-SecureString <certificate file password> -AsPlainText -Force $cert = New-AzApplicationGatewaySSLCertificate -Name cert01 -CertificateFile <full path to .pfx file> -Password $passwdNote
Este exemplo configura o certificado usado para a conexão TLS. O certificado precisa estar no formato .pfx.
Crie o ouvinte HTTP para o gateway da aplicação. Atribua a configuração do IP frontend, a porta e o certificado TLS/SSL para usar.
$listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $certFaça upload do certificado para ser usado nos recursos do backend do pool habilitados pelo TLS.
Note
A sonda padrão recebe a chave pública do TLS padrão vinculado ao endereço IP do backend e compara o valor da chave pública que recebe com o valor da chave pública que você fornece aqui.
Se você estiver usando cabeçalhos de host e Server Name Indication (SNI) no backend, a chave pública recuperada pode não ser o site pretendido para onde o tráfego flui. Se estiver em dúvida, acesse https://127.0.0.1/ os servidores backend para confirmar qual certificado é usado para a vinculação padrão do TLS. Use a chave pública desse pedido nesta seção. Se você está usando headers host-headers e SNI em bindings HTTPS e não recebe resposta e certificado de uma requisição manual do navegador nos https://127.0.0.1/ servidores backend, deve configurar um TLS binding padrão neles. Se você não fizer isso, as sondas falham e o back-end não é permitido.
Para mais informações sobre SNI no Application Gateway, veja Visão Geral da Terminação do TLS e TLS de ponta a ponta com o Application Gateway.
$authcert = New-AzApplicationGatewayAuthenticationCertificate -Name 'allowlistcert1' -CertificateFile C:\cert.cerNote
O certificado fornecido na etapa anterior deve ser a chave pública do certificado .pfx presente no backend. Exporte o certificado (não o certificado raiz) instalado no servidor backend no formato Reivindicação, Evidência e Raciocínio (CER) e use-o nesta etapa. Essa etapa permite o backend com o gateway de aplicação.
Se você está usando o SKU Application Gateway v2, então crie um certificado raiz confiável em vez de um certificado de autenticação. Para mais informações, veja Visão Geral do TLS de ponta a ponta com o Application Gateway:
$trustedRootCert01 = New-AzApplicationGatewayTrustedRootCertificate -Name "test1" -CertificateFile <path to root cert file>Configure as configurações HTTP para o backend do gateway de aplicação. Atribua o certificado carregado na etapa anterior às configurações HTTP.
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name 'setting01' -Port 443 -Protocol Https -CookieBasedAffinity Enabled -AuthenticationCertificates $authcertPara o SKU Application Gateway v2, use o seguinte comando:
$poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name “setting01” -Port 443 -Protocol Https -CookieBasedAffinity Disabled -TrustedRootCertificate $trustedRootCert01 -HostName "test1"Crie uma regra de roteamento de balanceador de carga que configure o comportamento do balanceador de carga. Neste exemplo, é criada uma regra básica de round-robin.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $poolConfigure o tamanho da instância do gateway de aplicação. Para o SKU v1, os tamanhos disponíveis são Standard_Small, Standard_Medium e Standard_Large, e os valores de capacidade são de 1 a 32. O SKU v2 (Standard_v2 ou WAF_v2) suporta até 125 instâncias. Para obter mais informações, consulte Dimensionamento de Gateway de Aplicativo v2 e WAF v2.
$sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2Note
Uma contagem de instância de 1 pode ser escolhida para fins de teste. É importante saber que qualquer contagem de instâncias em menos de duas instâncias não é coberta pelo SLA e, portanto, não é recomendada. Pequenos gateways devem ser usados para testes de desenvolvimento e não para fins de produção.
Configure a política TLS para ser usada no gateway de aplicação. O Application Gateway suporta a capacidade de definir uma versão mínima para versões do protocolo TLS.
Os valores a seguir são uma lista de versões de protocolo que podem ser definidas:
- TLSV1_0
- TLSV1_1
- TLSV1_2
O exemplo a seguir define a versão mínima do protocolo para TLSv1_2 e permite apenas TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 e TLS_RSA_WITH_AES_128_GCM_SHA256 .
$SSLPolicy = New-AzApplicationGatewaySSLPolicy -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256" -PolicyType Custom
Criar o gateway de aplicativo
Usando todos os passos anteriores, crie o gateway de aplicação. A criação do gateway é um processo que leva muito tempo para ser executado.
Para o SKU V1, use o comando abaixo
$appgw = New-AzApplicationGateway -Name appgateway -SSLCertificates $cert -ResourceGroupName "appgw-rg" -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SSLPolicy $SSLPolicy -AuthenticationCertificates $authcert -Verbose
Para o SKU V2, use o comando abaixo
$appgw = New-AzApplicationGateway -Name appgateway -SSLCertificates $cert -ResourceGroupName "appgw-rg" -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting01 -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SSLPolicy $SSLPolicy -TrustedRootCertificate $trustedRootCert01 -Verbose
Solicite um novo certificado se o certificado backend estiver expirado
Use esse procedimento para aplicar um novo certificado caso o certificado backend esteja expirado.
Recupere o gateway do aplicativo para atualizar.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGAdicione o novo recurso de certificado do arquivo .cer, que contém a chave pública do certificado e também pode ser o mesmo certificado adicionado ao ouvinte para terminação TLS no gateway de aplicação.
Add-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name 'NewCert' -CertificateFile "appgw_NewCert.cer"Coloque o novo objeto certificado de autenticação em uma variável (TypeName: Microsoft.Azure. Comandos.Rede.Modelos.PSApplicaçãoGatewayAutenticationCertificate).
$AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCertAtribua o novo certificado à Configuração BackendHttp e encaminhe-o com a variável $AuthCert. (Especifique o nome da configuração HTTP que você deseja mudar.)
$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
- Comprometa a mudança no gateway de aplicação e passe a nova configuração contida para a variável $out.
Set-AzApplicationGateway -ApplicationGateway $gw
Remover um certificado expirado não utilizado das Configurações HTTP
Use este procedimento para remover um certificado expirado não utilizado das Configurações HTTP.
Recupere o gateway do aplicativo para atualizar.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGListe o nome do certificado de autenticação que você quer remover.
Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select nameRemova o certificado de autenticação de um gateway de aplicação.
$gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCertConfirme a alteração.
Set-AzApplicationGateway -ApplicationGateway $gw
Limitar as versões do protocolo TLS em um gateway de aplicação existente
Os passos anteriores levaram você a criar uma aplicação com TLS de ponta a ponta e desativar certas versões do protocolo TLS. O exemplo a seguir desativa certas políticas TLS em um gateway de aplicação existente.
Recupere o gateway do aplicativo para atualizar.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGDefina uma política TLS. No exemplo a seguir, TLSv1.0 e TLSv1.1 estão desativados e as suítes de cifras TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 e TLS_RSA_WITH_AES_128_GCM_SHA256 são as únicas permitidas.
Set-AzApplicationGatewaySSLPolicy -MinProtocolVersion TLSv1_2 -PolicyType Custom -CipherSuite "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256" -ApplicationGateway $gwPor fim, atualize o gateway. Essa última etapa é uma tarefa de longa data. Quando termina, o TLS de ponta a ponta é configurado no gateway da aplicação.
$gw | Set-AzApplicationGateway
Obtenha um nome DNS de gateway de aplicação
Após a criação do gateway, o próximo passo é configurar a interface para comunicação. O Application Gateway requer um nome DNS atribuído dinamicamente ao usar um IP público, o que não é amigável. Para garantir que os usuários finais possam acessar o gateway de aplicação, você pode usar um registro CNAME para apontar ao endpoint público do gateway de aplicação. Para mais informações, veja Configuração de um nome de domínio personalizado para no Azure.
Para configurar um alias, recupere detalhes do gateway de aplicação e seu nome IP/DNS associado usando o elemento PublicIPAddress associado ao gateway de aplicação. Use o nome DNS do gateway de aplicação para criar um registro CNAME que aponte as duas aplicações web para esse nome DNS. Não recomendamos o uso de registros A, porque o VIP pode mudar ao reiniciar o gateway de aplicação.
Get-AzPublicIpAddress -ResourceGroupName appgw-RG -Name publicIP01
Name : publicIP01
ResourceGroupName : appgw-RG
Location : westus
Id : /subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/publicIPAddresses/publicIP01
Etag : W/"00000d5b-54ed-4907-bae8-99bd5766d0e5"
ResourceGuid : 00000000-0000-0000-0000-000000000000
ProvisioningState : Succeeded
Tags :
PublicIpAllocationMethod : Dynamic
IpAddress : xx.xx.xxx.xx
PublicIpAddressVersion : IPv4
IdleTimeoutInMinutes : 4
IpConfiguration : {
"Id": "/subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/applicationGateways/appgwtest/frontendIP
Configurations/frontend1"
}
DnsSettings : {
"Fqdn": "00000000-0000-xxxx-xxxx-xxxxxxxxxxxx.cloudapp.net"
}
Próximas Etapas
Para mais informações sobre como reforçar a segurança das suas aplicações web com o Firewall de Aplicativo Web através do Application Gateway, consulte a visão geral do Web application firewall.