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.
Este artigo mostra como fornecer segurança para o domínio personalizado em seu aplicativo ou aplicativo de funções do Serviço de Aplicativo do Azure criando uma associação de certificado. Ao concluir, você poderá acessar seu aplicativo do Serviço de Aplicativo no ponto de extremidade https://
para seu nome de Sistema de Nomes de Domínio (DNS) personalizado. Um exemplo é https://www.contoso.com
.
Pré-requisitos
- Escale seu aplicativo do App Service para uma das camadas de preço com suporte: Básico, Padrão ou Premium.
- Mapeie um nome de domínio para seu aplicativo ou compre e configure-o no Azure.
Adicionar a associação
No portal do Azure:
No painel esquerdo, selecione Serviços de Aplicativo><nome do aplicativo>.
No painel esquerdo do aplicativo, selecione Domínios personalizados.
Ao lado do domínio personalizado, selecione Adicionar associação.
Se o aplicativo já tiver um certificado para o domínio personalizado selecionado, você poderá selecioná-lo em Certificado. Caso contrário, você deve adicionar um certificado usando uma das seleções na Origem:
- Criar Certificado Gerenciado do Serviço de Aplicativo: permitir que o Serviço de Aplicativo crie um certificado gerenciado para seu domínio selecionado. Essa é a opção mais fácil. Para obter mais informações, confira Criar um certificado gerenciado gratuito .
- Importar Certificado do Serviço de Aplicativo: no Certificado do Serviço de Aplicativo, selecione o certificado do Serviço de Aplicativo que você comprou para o domínio selecionado.
- Carregar certificado (.pfx): siga o fluxo de trabalho em Carregar um certificado privado para carregar um certificado PFX (arquivo PFX) de seu computador local e especifique a senha do certificado.
- Importar do Key Vault: Escolha Selecionar o certificado do Key Vault e selecione o certificado na caixa de diálogo.
No tipo TLS/SSL, selecione SSL SNI ou SSL baseado em IP:
- SNI SSL: Você pode adicionar várias associações de Server Name Indication (SNI) Secure Sockets Layer (SSL). Essa opção permite vários certificados TLS/SSL (Transport Layer Security) para ajudar a proteger vários domínios no mesmo endereço IP. A maioria dos navegadores modernos (incluindo Microsoft Edge, Chrome, Firefox e Opera) dá suporte ao SNI. (Para obter mais informações, consulte Indicação de nome do servidor.)
- SSL baseado em IP: você pode adicionar apenas uma associação SSL de IP. Esta opção permite apenas um certificado TLS/SSL para ajudar a proteger um endereço IP público dedicado. Depois de configurar a associação, siga as etapas em Remapear registros para o SSL baseado em IP. O SSL baseado em IP tem suporte apenas na camada Standard ou superior.
Ao adicionar um novo certificado, selecione Validar para validar o novo certificado.
Selecione Adicionar.
Depois que a operação for concluída, o estado TLS/SSL do domínio personalizado será alterado para Protegido.
Um estado protegido em domínios personalizados significa que um certificado fornece segurança. O Serviço de Aplicativo não verifica se o certificado foi autoassinado ou expirou, o que também pode fazer com que os navegadores mostrem um erro ou aviso.
Remapear os registros para o SSL baseado em IP
Esta etapa é necessária apenas para o SSL baseado em IP. Para uma associação SSL SNI, pule para Testar HTTPS.
Há potencialmente duas alterações que você precisa fazer:
Por padrão, o aplicativo usa um endereço IP público compartilhado. Quando você associa um certificado com IP SSL, o Serviço de Aplicativo cria um novo endereço IP dedicado para o aplicativo. Se você mapeou um registro A para o aplicativo, atualize o registro do domínio com esse novo endereço IP dedicado.
A página Domínio personalizado de seu aplicativo é atualizada com o novo endereço IP dedicado. Copie esse endereço IP e, em seguida, remapee o registro A para esse novo endereço IP.
Se você tiver uma associação SSL SNI para
<app-name>.azurewebsites.net
, remapeie qualquer mapeamento de CNAME para apontar parasni.<app-name>.azurewebsites.net
. (Adicione o prefixosni
.)
Testar HTTPS
Procure por https://<your.custom.domain>
em vários navegadores para verificar se seu aplicativo aparece.
O código do aplicativo pode inspecionar o protocolo por meio do cabeçalho x-appservice-proto
. O cabeçalho apresenta o valor http
ou https
.
Caso seu aplicativo retorne erros de validação de certificado, você provavelmente está usando um certificado autoassinado. Se esse não for o caso, você provavelmente deixou de fora certificados intermediários quando exportou seu certificado para o arquivo .pfx.
Perguntas frequentes
Como fazer para garantir que o endereço IP do aplicativo não seja alterado quando eu fizer alterações na associação do certificado?
Seu endereço IP de entrada pode ser alterado ao excluir uma associação, mesmo se essa associação for IP SSL. Esse comportamento é especialmente importante quando você renova um certificado que já está em uma associação SSL de IP. Para evitar uma alteração no endereço IP do aplicativo, siga estas etapas:
- Carregar o novo certificado.
- Associe o novo certificado ao domínio personalizado desejado sem excluir o antigo. Essa ação substitui a associação em vez de remover a antiga.
- Exclua o certificado antigo.
Posso desabilitar o redirecionamento forçado de HTTP para HTTPS?
Por padrão, o Serviço de Aplicativo força um redirecionamento de solicitações HTTP para HTTPS. Para desabilitar esse comportamento, confira Definir configurações gerais .
Como posso alterar as versões mínimas do TLS para o aplicativo?
Seu aplicativo permite o TLS 1.2 por padrão. Padrões do setor, como PCI DSS , recomendam esse nível de TLS. Para impor diferentes versões do TLS, confira Definir configurações gerais .
Como fazer para lidar com a terminação TLS no Serviço de Aplicativo?
No Serviço de Aplicativo, a Terminação TLS ocorre nos balanceadores de carga de rede de modo que todas as solicitações HTTPS cheguem ao seu aplicativo como solicitações HTTP não criptografadas. Se a lógica do seu aplicativo precisar verificar se as solicitações do usuário estão criptografadas, inspecione o cabeçalho X-Forwarded-Proto
.
Os guias de configuração específicos da linguagem, como o guia de configuração do Linux Node.js, mostram como detectar uma sessão HTTPS no código do aplicativo.
Automatizar com scripts
CLI do Azure
Associar um certificado TLS/SSL personalizado a um aplicativo 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