Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Visão geral
O Gateway de Aplicativo do Azure dá suporte à criptografia de ponta a ponta do tráfego. O Application Gateway encerra a conexão TLS/SSL no gateway de aplicativo. Em seguida, o gateway aplica as regras de roteamento ao tráfego, criptografa novamente o pacote e encaminha o pacote para o servidor back-end apropriado com base nas regras de roteamento definidas. Qualquer resposta do servidor Web atravessa o mesmo processo para o utilizador final.
O Application Gateway suporta a definição de opções TLS personalizadas. Ele também suporta a desativação das seguintes versões de protocolo: TLSv1.0, TLSv1.1 e TLSv1.2, bem como a definição de quais pacotes de codificação usar e a ordem de preferência. Para saber mais sobre as opções configuráveis de TLS, consulte a visão geral da política de TLS.
Observação
O SSL 2.0 e o SSL 3.0 estão desativados por padrão e não podem ser habilitados. Eles são considerados não seguros e não podem ser usados com o Application Gateway.
Cenário
Nesse cenário, você aprenderá a criar um gateway de aplicativo 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ço de 10.0.0.0/16.
- Crie duas sub-redes chamadas appgwsubnet e appsubnet.
- Crie um pequeno gateway de aplicativo que suporte criptografia TLS de ponta a ponta que limite as versões do protocolo TLS e os pacotes de codificação.
Antes de começar
Observação
Recomendamos que utilize o módulo do Azure Az 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.
Para configurar o TLS de ponta a ponta com um gateway de aplicativo, é necessário um certificado para o gateway e certificados para os servidores back-end. O certificado de gateway é usado para derivar uma chave simétrica de acordo com a especificação do protocolo TLS. A chave simétrica é então usada para criptografar e descriptografar o tráfego enviado para o gateway. O certificado de gateway precisa estar no formato PFX (Personal Information Exchange). Esse formato de arquivo permite exportar a chave privada exigida pelo gateway de aplicativo para executar a criptografia e a descriptografia do tráfego.
Para criptografia TLS de ponta a ponta, o back-end deve ser explicitamente permitido pelo gateway de aplicação. Carregue o certificado público dos servidores de backend para o gateway de aplicações. Adicionar o certificado garante que o gateway de aplicativo se comunique apenas com instâncias de back-end conhecidas. Isso garante 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 o orienta na criação de um grupo de recursos que contém o gateway de aplicativo.
Entre na sua conta do Azure.
Connect-AzAccountSelecione a assinatura a ser usada para esse cenário.
Select-Azsubscription -SubscriptionName "<Subscription name>"Crie um grupo de recursos. (Ignore esta etapa se estiver usando um grupo de recursos existente.)
New-AzResourceGroup -Name appgw-rg -Location "West US"
Criar uma rede virtual e uma sub-rede para o gateway de aplicação
O exemplo a seguir cria uma rede virtual e duas sub-redes. Uma sub-rede é usada para armazenar o gateway de aplicativo. A outra sub-rede é usada para os back-ends que hospedam o aplicativo Web.
Atribua um intervalo de endereços para a sub-rede a ser usada para o gateway de aplicativo.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -AddressPrefix 10.0.0.0/24Observação
As sub-redes configuradas para um gateway de aplicativo devem ser dimensionadas corretamente. Um gateway de aplicativo pode ser configurado para até 10 instâncias. Cada instância usa um endereço IP da sub-rede. Uma sub-rede muito pequena pode afetar negativamente a expansão de um gateway de aplicativo.
Atribua um intervalo de endereços a ser usado para o pool de endereços de back-end.
$nicSubnet = New-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -AddressPrefix 10.0.2.0/24Crie uma rede virtual com as sub-redes definidas nas etapas 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 a serem usados nas etapas a seguir.
$vnet = Get-AzvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appgwsubnet' -VirtualNetwork $vnet $nicSubnet = Get-AzVirtualNetworkSubnetConfig -Name 'appsubnet' -VirtualNetwork $vnet
Criar um endereço IP público para a configuração de frontend
Crie um recurso IP público a ser usado para o gateway de aplicativo. Esse endereço IP público é usado em uma das etapas a seguir.
$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. Apenas 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 aplicativo, recomendamos usar um registro CNAME como um alias.
Criar um objeto de configuração do gateway de aplicação
Todos os itens de configuração são definidos antes de criar o gateway de aplicativo. As etapas a seguir criam os itens de configuração necessários para um recurso de gateway de aplicativo.
Crie uma configuração IP do gateway de aplicação. Essa configuração define qual das sub-redes o gateway de aplicativo usa. Quando o gateway de aplicação é iniciado, ele obtém um endereço IP da sub-rede configurada e encaminha o tráfego de rede para os endereços IP no pool de endereços IP de back-end. Note que cada instância terá 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 o front-end do gateway de aplicativo. A etapa seguinte associa o endereço IP público da etapa anterior à configuração de IP de frontend.
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicipConfigure o pool de endereços IP de back-end com os endereços IP dos servidores Web de back-end. Esses endereços IP são aqueles que recebem o tráfego de rede proveniente do ponto de extremidade IP do frontend. Substitua os endereços IP do exemplo pelos endereços IP de extremidade da sua aplicação.
$pool = New-AzApplicationGatewayBackendAddressPool -Name 'pool01' -BackendIPAddresses 203.0.113.1, 203.0.113.2, 203.0.113.3Observação
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 back-end. Você habilita isso usando o comutador -BackendFqdns.
Configurar a porta IP do frontend para o ponto de extremidade IP público. Essa porta é a porta à qual os usuários finais se conectam.
$fp = New-AzApplicationGatewayFrontendPort -Name 'port01' -Port 443Configure o certificado para o gateway de aplicativo. Esse certificado é usado para descriptografar e criptografar novamente o tráfego no gateway de aplicativo.
$passwd = ConvertTo-SecureString <certificate file password> -AsPlainText -Force $cert = New-AzApplicationGatewaySSLCertificate -Name cert01 -CertificateFile <full path to .pfx file> -Password $passwdObservação
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 de aplicativo. Atribua a configuração de IP frontend, a porta e o certificado TLS/SSL a serem usados.
$listener = New-AzApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SSLCertificate $certCarregue o certificado a ser usado nos recursos do pool de back-end habilitado para TLS.
Observação
A sonda padrão obtém a chave pública da ligação TLS padrão no endereço IP do back-end 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 Indicação de Nome do Servidor (SNI) no back-end, a chave pública recuperada pode não ser o site pretendido para o qual o tráfego flui. Se estiver em dúvida, visite os servidores de back-end para confirmar qual certificado é usado para a ligação TLS https://127.0.0.1/. Use a chave pública dessa solicitação nesta seção. Se estiveres a usar cabeçalhos de host e SNI em ligações HTTPS e não receberes uma resposta e um certificado de uma solicitação manual do navegador para https://127.0.0.1/ nos servidores backend, deverás configurar uma ligação TLS padrão neles. Se não o fizer, as sondas falharão e não será permitido o acesso ao back-end.
Para obter mais informações sobre SNI no Application Gateway, consulte Visão geral da terminação de TLS e do TLS de ponta a ponta com o Application Gateway.
$authcert = New-AzApplicationGatewayAuthenticationCertificate -Name 'allowlistcert1' -CertificateFile C:\cert.cerObservação
O certificado fornecido na etapa anterior deve ser a chave pública do certificado .pfx presente no back-end. Exporte o certificado (não o certificado raiz) instalado no servidor back-end no formato Claim, Evidence and Reasoning (CER) e use-o nesta etapa. Esta etapa permite a interação entre o back-end e o gateway de aplicação.
Se você estiver usando a SKU do Application Gateway v2, crie um certificado raiz confiável em vez de um certificado de autenticação. Para obter mais informações, consulte 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 back-end do gateway de aplicativo. Atribua o certificado carregado na etapa anterior às configurações HTTP.
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name 'setting01' -Port 443 -Protocol Https -CookieBasedAffinity Enabled -AuthenticationCertificates $authcertPara a SKU do 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 do balanceador de carga que configure o comportamento do balanceador de carga. Neste exemplo, é criada uma regra round-robin básica.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $poolConfigure o tamanho da instância do gateway de aplicação. Os tamanhos disponíveis são Standard_Small, Standard_Medium e Standard_Large. Para a capacidade, os valores disponíveis são de 1 a 10.
$sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2Observação
Uma contagem de instâncias de 1 pode ser escolhida para fins de teste. É importante saber que qualquer contagem de instâncias inferior a duas instâncias não é coberta pelo SLA e, portanto, não é recomendada. Pequenos gateways devem ser usados para teste de desenvolvimento e não para fins de produção.
Configure a política TLS a ser usada no gateway de aplicativo. O Application Gateway suporta a capacidade de definir uma versão mínima para versões do protocolo TLS.
Os seguintes valores 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 como TLSv1_2 e habilita 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 aplicação
Usando todas as etapas anteriores, crie o gateway de aplicativo. A criação do gateway é um processo que leva muito tempo para ser executado.
Para V1 SKU 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 V2 SKU 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
Aplicar um novo certificado se o certificado de back-end tiver expirado
Use este procedimento para aplicar um novo certificado se o certificado de back-end tiver expirado.
Recupere o gateway da aplicação a ser atualizado.
$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 pode também 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"Obtenha o novo objeto de certificado de autenticação em uma variável (TypeName: Microsoft.Azure.Commands.Network.Models.PSApplicationGatewayAuthenticationCertificate).
$AuthCert = Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name NewCertAtribua o novo certificado à configuração BackendHttp e consulte-o com a variável $AuthCert. (Especifique o nome da configuração HTTP que você deseja alterar.)
$out= Set-AzApplicationGatewayBackendHttpSetting -ApplicationGateway $gw -Name "HTTP1" -Port 443 -Protocol "Https" -CookieBasedAffinity Disabled -AuthenticationCertificates $Authcert
- Confirme a alteração no gateway de aplicativo 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 da aplicação a ser atualizado.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGListe o nome do certificado de autenticação que você deseja remover.
Get-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw | select nameRemova o certificado de autenticação de um gateway de aplicativo.
$gw=Remove-AzApplicationGatewayAuthenticationCertificate -ApplicationGateway $gw -Name ExpiredCertConfirme a alteração.
Set-AzApplicationGateway -ApplicationGateway $gw
Limitar versões do protocolo TLS em um gateway de aplicativo existente
As etapas anteriores levaram você a criar um aplicativo com TLS de ponta a ponta e desabilitar determinadas versões do protocolo TLS. O exemplo a seguir desabilita determinadas políticas TLS em um gateway de aplicativo existente.
Recupere o gateway da aplicação a ser atualizado.
$gw = Get-AzApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRGDefina uma política TLS. No exemplo a seguir, TLSv1.0 e TLSv1.1 estão desabilitados e os pacotes de codificação 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 os únicos permitidos.
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. Este último passo é uma tarefa de longa duração. Quando isso é feito, o TLS de ponta a ponta é configurado no gateway de aplicativo.
$gw | Set-AzApplicationGateway
Obter um nome DNS do gateway de aplicativo
Depois que o gateway é criado, a próxima etapa é configurar o front-end para comunicação. O Application Gateway requer um nome DNS atribuído dinamicamente ao usar um IP público, que não é amigável. Para garantir que os utilizadores finais possam aceder ao gateway de aplicações, pode utilizar um registo CNAME para apontar para o ponto de extremidade público do gateway de aplicações. Para obter mais informações, consulte Configurando um nome de domínio personalizado para no Azure.
Para configurar um alias, recupere os detalhes do gateway de aplicação e o seu nome IP/DNS associado utilizando o elemento PublicIPAddress anexado ao gateway de aplicação. Use o nome DNS do gateway de aplicativo para criar um registro CNAME que aponte os dois aplicativos Web para esse nome DNS. Não recomendamos o uso de registos A, porque o VIP pode mudar na reinicialização da 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óximos passos
Para obter mais informações sobre como proteger a segurança de seus aplicativos Web com o Web Application Firewall por meio do Application Gateway, consulte a visão geral do firewall de aplicativos Web.