Proteger um nome DNS personalizado com um enlace TLS/SSL no Serviço de Aplicações do Azure

Este artigo mostra-lhe como proteger o domínio personalizado na sua aplicação de Serviço de Aplicações ou aplicação de funções ao criar um enlace de certificado. Quando terminar, pode aceder à sua aplicação Serviço de Aplicações no ponto final para o https:// nome DNS personalizado (por exemplo, https://www.contoso.com).

Aplicação Web com certificado TLS/SSL personalizado

Pré-requisitos

1. Adicione o enlace

No portal do Azure:

  1. No menu esquerdo, selecioneNome> da aplicação dos Serviços de Aplicações<>.

  2. No painel de navegação esquerdo da sua aplicação, selecione Domínios personalizados

  3. Junto ao domínio personalizado, selecione Adicionar enlace

    Uma captura de ecrã a mostrar como iniciar a caixa de diálogo Adicionar Enlace TLS/SSL.

  4. Se a sua aplicação já tiver um certificado para o domínio personalizado selecionado, pode selecioná-lo em Certificado. Caso contrário, tem de adicionar um certificado com uma das seleções em Origem.

    • Criar Serviço de Aplicações Certificado Gerido - Permita Serviço de Aplicações criar um certificado gerido para o seu domínio selecionado. Esta opção é a mais simples. Para obter mais informações, veja Criar um certificado gerido gratuito.
    • Importar Serviço de Aplicações Certificado - No Certificado Serviço de Aplicações, selecione um certificado de Serviço de Aplicações que tenha comprado para o seu domínio selecionado. Para comprar um certificado Serviço de Aplicações, veja Importar um certificado de Serviço de Aplicações.
    • Carregar certificado (.pfx) - Siga o fluxo de trabalho em Carregar um certificado privado para carregar um certificado PFX a partir do seu computador local e especificar a palavra-passe do certificado.
    • Importar do Key Vault - Selecione Selecionar certificado do cofre de chaves e selecione o certificado na caixa de diálogo.
  5. No tipo TLS/SSL, escolha entre SNI SSL e SSL baseado em IP.

    • SNI SSL: podem ser adicionados vários enlaces SNI SSL. Esta opção permite que vários certificados TLS/SSL protejam múltiplos domínios no mesmo endereço IP. A maioria dos browsers modernos (incluindo o Internet Explorer, Chrome, Firefox e Opera) suportam sNI (para obter mais informações, consulte Indicação do Nome do Servidor).
      • SSL baseado em IP: só pode ser adicionado um enlace SSL IP. Esta opção permite apenas um certificado TLS/SSL para proteger um endereço IP público dedicado. Depois de configurar o enlace, siga os passos em 2. Remapeie os registos do SSL baseado em IP.
        O IP SSL só é suportado no escalão Standard ou superior.
  6. Ao adicionar um novo certificado, valide o novo certificado ao selecionar Validar.

  7. Selecione Adicionar.

    Assim que a operação estiver concluída, o estado TLS/SSL do domínio personalizado é alterado para Seguro.

    Uma captura de ecrã a mostrar o domínio personalizado protegido por um enlace de certificado.

Nota

Um estado Seguro nos Domínios personalizados significa que está protegido com um certificado, mas Serviço de Aplicações não verifica se o certificado está autoassinado ou expirado, por exemplo, o que também pode fazer com que os browsers mostrem um erro ou aviso.

2. Remapeie os registos do SSL baseado em IP

Este passo só é necessário para o SSL baseado em IP. Para obter um enlace SNI SSL, avance para Testar HTTPS para o seu domínio personalizado.

Existem duas alterações que tem de fazer, potencialmente:

  • Por predefinição, a aplicação utiliza um endereço IP público partilhado. Quando vincula um certificado ao SSL IP, Serviço de Aplicações cria um novo endereço IP dedicado para a sua aplicação. Se mapeou um registo A para a sua aplicação, atualize o seu registo de domínio com este novo endereço IP dedicado.

    A página Domínio personalizado da sua aplicação é atualizada com o novo endereço IP dedicado. Copie este endereço IP e, em seguida, remapte o registo A para este novo endereço IP.

  • Se tiver um enlace SNI SSL para <app-name>.azurewebsites.net, remapte qualquer mapeamento CNAME para apontar para sni.<app-name>.azurewebsites.net (adicione o sni prefixo).

3. Testar HTTPS

Em vários browsers, procure para https://<your.custom.domain> verificar se serve a sua aplicação.

Captura de ecrã a mostrar um exemplo de navegação para o seu domínio personalizado com o URL de contoso.com realçado.

O código da aplicação pode inspecionar o protocolo através do cabeçalho "x-appservice-proto". O cabeçalho tem um valor de http ou https.

Nota

Se a sua aplicação lhe der erros de validação de certificados, provavelmente está a utilizar um certificado autoassinado.

Se não for esse o caso, poderá ter deixou de fora certificados intermédios quando exportou o certificado para o ficheiro PFX.

Perguntas mais frequentes

Como devo proceder para certificar-se de que o endereço IP da aplicação não é alterado quando efetuo alterações ao enlace de certificado?

O seu endereço IP de entrada pode ser alterado quando elimina um enlace, mesmo que esse enlace seja SSL IP. Isto é especialmente importante quando renova um certificado que já se encontra num enlace SSL ip. Para evitar uma alteração de endereço IP da sua aplicação, siga estes passos por ordem:

  1. Carregar o novo certificado.
  2. Vincular o novo certificado com o domínio personalizado que pretende sem eliminar os antigo. Esta ação substitui o enlace em vez de remover o antigo.
  3. Eliminar o certificado antigo.

Posso desativar o redirecionamento forçado de HTTP para HTTPS?

Por predefinição, Serviço de Aplicações força um redirecionamento de pedidos HTTP para HTTPS. Para desativar este comportamento, veja Configurar definições gerais.

Como posso alterar as versões mínimas do TLS para a aplicação?

A aplicação permite o TLS 1.2 por predefinição, o que é o nível do TLS recomendado pelas normas do setor, como PCI DSS. Para impor versões TLS diferentes, veja Configurar definições gerais.

Como devo proceder para processar a terminação do TLS no Serviço de Aplicações?

No Serviço de Aplicações, a terminação do TLS ocorre nos balanceadores de carga de rede, pelo que todos os pedidos HTTPS chegam à sua aplicação como pedidos HTTP não encriptados. Se a lógica da aplicação precisar de verificar se os pedidos do utilizador estão encriptados ou não, inspecione o X-Forwarded-Proto cabeçalho.

Os guias de configuração específicos do idioma, como o guia de configuração Node.js linux , mostram-lhe como detetar uma sessão HTTPS no código da aplicação.

Automatizar com scripts

CLI do Azure

Vincular um certificado TLS/SSL personalizado a uma aplicação Web

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
$webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Sign in to your domain provider's website and configure the following records:"
Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled

Mais recursos