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 no seu Serviço de Aplicações aplicação ou aplicação de funções ao criar um enlace de certificado. Quando tiver terminado, pode aceder à sua aplicação Serviço de Aplicações no ponto final para o https:// seu nome DNS personalizado (por exemplo, https://www.contoso.com).

Aplicação Web com certificado TLS/SSL personalizado

Pré-requisitos

1. Adicione o enlace

Na portal do Azure:

  1. No menu esquerdo, selecioneNome> da aplicação dos Serviços aplicacionais<>.

  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.
    • Carregar o certificado (.pfx) – siga o fluxo de trabalho em Carregar um certificado privado para carregar um certificado PFX a partir do 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 SSL SNI e SSL baseado em IP.

    • SSL SNI: podem ser adicionados vários enlaces SNI SSL. Esta opção permite que vários certificados TLS/SSL protejam vários domínios no mesmo endereço IP. A maioria dos browsers modernos (incluindo 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 que apenas um certificado TLS/SSL proteja um endereço IP público dedicado. Depois de configurar o enlace, siga os passos em 2. Remapear registos para SSL baseado em IP.
        O SSL de IP só é suportado no escalão Básico 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.

    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 expirou, por exemplo, o que também pode fazer com que os browsers mostrem um erro ou aviso.

2. Remapear registos para SSL baseado em IP

Este passo só é necessário para o SSL baseado em IP. Para 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 sua aplicação utiliza um endereço IP público partilhado. Quando vincula um certificado com 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, remape o registo A para este novo endereço IP.

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

3. Testar HTTPS

Em vários browsers, navegue até 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 apresentar 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 faço alterações ao enlace de certificado?

O 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á está num enlace SSL de 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 diferentes versões do TLS, veja Configurar definições gerais.

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

No Serviço de Aplicações, a terminação de 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 ou não encriptados, inspecione o cabeçalho X-Forwarded-Proto.

Os guias de configuração específicos do idioma, como o Guia de configuração do linux Node.js , 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