Tutorial: carregar e associar certificados SSL ao serviço Azure AppTutorial: Upload and bind SSL certificates to Azure App Service

O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com correção automática.Azure App Service provides a highly scalable, self-patching web hosting service. Este tutorial mostra como proteger um domínio personalizado no serviço de aplicativo com um certificado que você comprou de uma autoridade de certificação confiável.This tutorial shows you how to secure a custom domain in App Service with a certificate that you purchased from a trusted certificate authority. Ele também mostra como carregar quaisquer certificados públicos e privados de que seu aplicativo precisa.It also shows you how to upload any private and public certificates your app needs. Quando tiver terminado, você poderá acessar seu aplicativo no ponto de extremidade HTTPS do seu domínio DNS personalizado.When you're finished, you'll be able to access your app at the HTTPS endpoint of your custom DNS domain.

Aplicação Web com certificado SSL personalizado

Neste tutorial, ficará a saber como:In this tutorial, you learn how to:

  • Atualizar o escalão de preço da sua aplicaçãoUpgrade your app's pricing tier
  • Proteger um domínio personalizado com um certificadoSecure a custom domain with a certificate
  • Carregar um certificado privadoUpload a private certificate
  • Carregar um certificado públicoUpload a public certificate
  • Renovar certificadosRenew certificates
  • Impor HTTPSEnforce HTTPS
  • Impor TLS 1.1/1.2Enforce TLS 1.1/1.2
  • Automatizar a gestão de TLS com scriptsAutomate TLS management with scripts

Pré-requisitosPrerequisites

Para concluir este tutorial:To complete this tutorial:

Preparar um certificado privadoPrepare a private certificate

Para proteger um domínio, o certificado deve atender a todos os seguintes requisitos:To secure a domain, the certificate must meet all the following requirements:

  • Configurado para autenticação do servidorConfigured for Server Authentication
  • Ser assinado por uma autoridade de certificação fidedignaSigned by a trusted certificate authority
  • Ser exportado como um ficheiro PFX protegido por palavra-passeExported as a password-protected PFX file
  • Conter uma chave privada com, pelo menos, 2048 bits de comprimentoContains private key at least 2048 bits long
  • Conter todos os certificados intermédios na cadeia de certificadosContains all intermediate certificates in the certificate chain

Dica

Se você precisar obter um certificado SSL personalizado, poderá obter um no portal do Azure diretamente e importá-lo para seu aplicativo.If you need to get a custom SSL certificate, you can get one in the Azure portal directly and import it to your app. Siga o tutorial App Service Certificates tutorial (Certificados do Serviço de Aplicações).Follow the App Service Certificates tutorial.

Nota

Os certificados de criptografia de curva elíptica (ECC) podem funcionar com o Serviço de Aplicações, mas não são abordados neste artigo.Elliptic Curve Cryptography (ECC) certificates can work with App Service but are not covered by this article. Trabalhe com a sua autoridade de certificados para saber quais são os passos exatos para criar certificados ECC.Work with your certificate authority on the exact steps to create ECC certificates.

Depois de obter um certificado do seu provedor de certificado, siga as etapas nesta seção para deixá-lo pronto para o serviço de aplicativo.Once you obtain a certificate from your certificate provider, follow the steps in this section to make it ready for App Service.

Intercalar certificados intermédiosMerge intermediate certificates

Se a sua autoridade de certificação lhe der vários certificados na cadeia de certificados, terá de intercalá-los por ordem.If your certificate authority gives you multiple certificates in the certificate chain, you need to merge the certificates in order.

Para tal, abra cada certificado recebido num editor de texto.To do this, open each certificate you received in a text editor.

Crie um ficheiro para o certificado intercalado, denominado mergedcertificate.crt.Create a file for the merged certificate, called mergedcertificate.crt. Num editor de texto, copie o conteúdo de cada certificado para este ficheiro.In a text editor, copy the content of each certificate into this file. A ordem dos seus certificados deve seguir a ordem na cadeia de certificados, a começar no seu certificado e a terminar no certificado de raiz.The order of your certificates should follow the order in the certificate chain, beginning with your certificate and ending with the root certificate. O aspeto é igual ao do exemplo abaixo:It looks like the following example:

-----BEGIN CERTIFICATE-----
<your entire Base64 encoded SSL certificate>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 2>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded root certificate>
-----END CERTIFICATE-----

Exportar o certificado para PFXExport certificate to PFX

Exporte o certificado SSL intercalado com a chave privada com que o pedido de certificado foi gerado.Export your merged SSL certificate with the private key that your certificate request was generated with.

Se tiver gerado o pedido de certificado com OpenSSL, significa que criou um ficheiro de chave privada.If you generated your certificate request using OpenSSL, then you have created a private key file. Para exportar o certificado para PFX, execute o seguinte comando.To export your certificate to PFX, run the following command. Substitua os marcadores de posição <private-key-file> e <merged-certificate-file> pelos caminhos para a chave privada e o ficheiro de certificado intercalado.Replace the placeholders <private-key-file> and <merged-certificate-file> with the paths to your private key and your merged certificate file.

openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  

Quando lhe for pedido, defina uma palavra-passe de exportação.When prompted, define an export password. Vai utilizar esta palavra-passe ao carregar o certificado SSL para o Serviço de Aplicações mais tarde.You'll use this password when uploading your SSL certificate to App Service later.

Se tiver utilizado o IIS ou Certreq.exe para gerar o pedido de certificado, instale o certificado no seu computador local e exporte-o para PFX.If you used IIS or Certreq.exe to generate your certificate request, install the certificate to your local machine, and then export the certificate to PFX.

Agora você está pronto para carregar o certificado no serviço de aplicativo.You're now ready upload the certificate to App Service.

Preparar a sua aplicação WebPrepare your web app

Para vincular um certificado SSL personalizado (um certificado de terceiros ou certificado do Serviço de Aplicações) à sua aplicação Web, o plano do Serviço de Aplicações tem de estar no escalão Básico, Standard,Premium ou Isolado.To bind a custom SSL certificate (a third-party certificate or App Service certificate) to your web app, your App Service plan must be in the Basic, Standard, Premium, or Isolated tier. Neste passo, vai confirmar que a aplicação Web está no escalão de preço suportado.In this step, you make sure that your web app is in the supported pricing tier.

Iniciar sessão no AzureLog in to Azure

Abra o Portal do Azure.Open the Azure portal.

No menu à esquerda, clique em Serviços de Aplicações e clique no nome da sua aplicação Web.From the left menu, click App Services, and then click the name of your web app.

Selecionar a aplicação Web

Chegou à página de gestão da sua aplicação Web.You have landed in the management page of your web app.

Verificar o escalão de preçoCheck the pricing tier

No painel de navegação esquerdo da página da aplicação Web, desloque-se para a secção Definições e selecione Aumentar verticalmente (plano do Serviço de Aplicações) .In the left-hand navigation of your web app page, scroll to the Settings section and select Scale up (App Service plan).

Menu de aumento vertical

Confirme que a aplicação Web não está no escalão F1 ou D1.Check to make sure that your web app is not in the F1 or D1 tier. O escalão atual da aplicação é realçado com uma caixa azul-escura.Your web app's current tier is highlighted by a dark blue box.

Verificar o escalão de preço

O SSL personalizado não é suportado nos escalões F1 ou D1.Custom SSL is not supported in the F1 or D1 tier. Se precisar de aumentar verticalmente, siga os passos na secção seguinte.If you need to scale up, follow the steps in the next section. Caso contrário, feche o aumentar verticalmente página e a ignorar a aumentar verticalmente o seu plano do serviço de aplicações secção.Otherwise, close the Scale up page and skip the Scale up your App Service plan section.

Aumentar verticalmente o seu plano do Serviço de AplicaçõesScale up your App Service plan

Selecione qualquer uma das camadas não gratuitas (B1, B2, B3 ou qualquer camada na categoria Produção).Select any of the non-free tiers (B1, B2, B3, or any tier in the Production category). Para obter opções adicionais, clique em Ver opções adicionais.For additional options, click See additional options.

Clique em Aplicar.Click Apply.

Escolher um escalão de preço

Quando vir a notificação seguinte, significa que a operação de dimensionamento está completa.When you see the following notification, the scale operation is complete.

Notificação para “aumentar verticalmente”

Proteger um domínio personalizadoSecure a custom domain

Dica

Se você precisar obter um certificado SSL personalizado, poderá obter um no portal do Azure diretamente e associá-lo ao seu aplicativo.If you need to get a custom SSL certificate, you can get one in the Azure portal directly and bind it to your app. Siga o tutorial App Service Certificates tutorial (Certificados do Serviço de Aplicações).Follow the App Service Certificates tutorial.

Para proteger um domínio personalizado com um certificado de terceiros, carregue o certificado particular preparado e, em seguida, associe-o ao domínio personalizado, mas o serviço de aplicativo simplifica o processo para você.To secure a custom domain with a third-party certificate, you upload the prepared private certificate and then bind it to the custom domain, but App Service simplifies the process for you. Execute as seguintes etapas:Do the following steps:

Clique em domínios personalizados no painel de navegação esquerdo do seu aplicativo e clique em Adicionar Associação para o domínio que você deseja proteger.Click Custom domains in the left navigation of your app, then click Add binding for the domain you want to secure. Se você não vir Adicionar Associação para um domínio, ele já estará seguro e deverá ter um estado SSL seguro .If you don't see Add binding for a domain, then it's already secure and should have a Secure SSL state.

Adicionar associação ao domínio

Clique em Carregar Certificado.Click Upload Certificate.

Em Ficheiro de Certificado PFX, selecione o ficheiro PFX.In PFX Certificate File, select your PFX file. Em Palavra-passe do certificado, escreva a palavra-passe que criou quando exportou o ficheiro PFX.In Certificate password, type the password that you created when you exported the PFX file.

Clique em Carregar.Click Upload.

Carregar certificado para o domínio

Aguarde até que o Azure carregue seu certificado e inicie a caixa de diálogo associações SSL.Wait for Azure to upload your certificate and launch the SSL bindings dialog.

Na caixa de diálogo associações SSL, selecione o certificado que você carregou e o tipo de SSL e clique em Adicionar Associação.In the SSL bindings dialog, select the certificate you uploaded and the SSL type, and then click Add Binding.

Nota

Há suporte para os seguintes tipos de SSL:The following SSL types are supported:

  • SSL baseado em SNI – várias associações SSL baseadas em SNI podem ser adicionadas.SNI-based SSL - Multiple SNI-based SSL bindings may be added. Esta opção permite utilizar vários certificados SSL para proteger múltiplos domínios no mesmo endereço IP.This option allows multiple SSL certificates to secure multiple domains on the same IP address. Os browsers mais modernos (incluindo o Internet Explorer, o Chrome, o Firefox e o Opera) suportam SNI (encontre informações mais abrangentes sobre o suporte de browsers em Server Name Indication [Indicação do Nome de Servidor]).Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (find more comprehensive browser support information at Server Name Indication).
  • SSL baseado em IP - só pode ser adicionado um enlace SSL baseado em IP.IP-based SSL - Only one IP-based SSL binding may be added. Esta opção permite utilizar apenas um certificado SSL para proteger um endereço IP público dedicado.This option allows only one SSL certificate to secure a dedicated public IP address. Para proteger vários domínios, tem de protegê-los a todos com o mesmo certificado SSL.To secure multiple domains, you must secure them all using the same SSL certificate. Esta é a opção tradicional para o enlace de SSL.This is the traditional option for SSL binding.

Associar SSL ao domínio

O estado SSL do domínio agora deve ser alterado para seguro.The domain's SSL state should now be changed to Secure.

Domínio protegido

Nota

Um estado seguro nos domínios personalizados significa que ele é protegido com um certificado, mas o serviço de aplicativo não verifica se o certificado é autoassinado ou expirou, por exemplo, que também pode fazer com que os navegadores mostrem um erro ou aviso.A Secure state in the Custom domains means that it is secured with a certificate, but App Service doesn't check if the certificate is self-signed or expired, for example, which can also cause browsers to show an error or warning.

Remapear um registo A para SSL IPRemap A record for IP SSL

Se você não usar SSL baseado em IP em seu aplicativo, pule para testar HTTPS para seu domínio personalizado.If you don't use IP-based SSL in your app, skip to Test HTTPS for your custom domain.

Por padrão, seu aplicativo usa um endereço IP público compartilhado.By default, your app uses a shared public IP address. Quando você associa um certificado com SSL baseado em IP, o serviço de aplicativo cria um novo endereço IP dedicado para seu aplicativo.When you bind a certificate with IP-based SSL, App Service creates a new, dedicated IP address for your app.

Se você mapeou um registro a para seu aplicativo, atualize o registro de domínio com esse novo endereço IP dedicado.If you have mapped an A record to your app, update your domain registry with this new, dedicated IP address.

A página de domínio personalizado do seu aplicativo é atualizada com o novo endereço IP dedicado.Your app's Custom domain page is updated with the new, dedicated IP address. Copie este endereço IP e remapeie o registo A para este endereço IP novo.Copy this IP address, then remap the A record to this new IP address.

Tester HTTPSTest HTTPS

Agora, só falta confirmar que HTTPS funciona no seu domínio personalizado.All that's left to do now is to make sure that HTTPS works for your custom domain. Em vários navegadores, navegue até https://<your.custom.domain> para ver que ele serve para o seu aplicativo.In various browsers, browse to https://<your.custom.domain> to see that it serves up your app.

Navegação do portal para a aplicação do Azure

Nota

Se seu aplicativo fornecer erros de validação de certificado, provavelmente você está usando um certificado autoassinado.If your app gives you certificate validation errors, you're probably using a self-signed certificate.

Se não for esse o caso, poderá ter deixou de fora certificados intermédios quando exportou o certificado para o ficheiro PFX.If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.

Renovar certificadosRenew certificates

O endereço IP de entrada pode alterar-se quando elimina um enlace, mesmo que esse enlace seja baseado no IP.Your inbound IP address can change when you delete a binding, even if that binding is IP-based. Isto é especialmente importante quando renovar um certificado que já está num enlace baseado no IP.This is especially important when you renew a certificate that's already in an IP-based binding. Para evitar uma alteração de endereço IP da sua aplicação, siga estes passos por ordem:To avoid a change in your app's IP address, follow these steps in order:

  1. Carregar o novo certificado.Upload the new certificate.
  2. Vincular o novo certificado com o domínio personalizado que pretende sem eliminar os antigo.Bind the new certificate to the custom domain you want without deleting the old one. Esta ação substitui o enlace em vez de remover o antigo.This action replaces the binding instead of removing the old one.
  3. Eliminar o certificado antigo.Delete the old certificate.

Impor HTTPSEnforce HTTPS

Por padrão, qualquer pessoa ainda pode acessar seu aplicativo usando HTTP.By default, anyone can still access your app using HTTP. Pode redirecionar todos os pedidos HTTP para a porta HTTPS.You can redirect all HTTP requests to the HTTPS port.

Na página do aplicativo, no painel de navegação esquerdo, selecione configurações de SSL.In your app page, in the left navigation, select SSL settings. Em seguida, em HTTPS Apenas, selecione Ativado.Then, in HTTPS Only, select On.

Impor HTTPS

Quando a operação for concluída, navegue para um dos URLs HTTP que apontam para a sua aplicação.When the operation is complete, navigate to any of the HTTP URLs that point to your app. Por exemplo:For example:

  • http://<app_name>.azurewebsites.net
  • http://contoso.com
  • http://www.contoso.com

Impor versões do TLSEnforce TLS versions

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.Your app allows TLS 1.2 by default, which is the recommended TLS level by industry standards, such as PCI DSS. Para impor versões do TLS diferentes, siga estes passos:To enforce different TLS versions, follow these steps:

Na página do aplicativo, no painel de navegação esquerdo, selecione configurações de SSL.In your app page, in the left navigation, select SSL settings. Em seguida, na versão do TLS, selecione a versão mínima do TLS que pretende.Then, in TLS version, select the minimum TLS version you want. Esta definição controla apenas as chamadas de entrada.This setting controls the inbound calls only.

Impor TLS 1.1 ou 1.2

Quando a operação for concluída, a sua aplicação rejeita todas as ligações com versões do TLS inferiores.When the operation is complete, your app rejects all connections with lower TLS versions.

Automatizar com scriptsAutomate with scripts

Você pode automatizar associações SSL para seu aplicativo com scripts, usando o CLI do Azure ou Azure PowerShell.You can automate SSL bindings for your app with scripts, using the Azure CLI or Azure PowerShell.

CLI do AzureAzure CLI

O comando seguinte carrega um ficheiro PFX exportado e obtém o thumbprint.The following command uploads an exported PFX file and gets the thumbprint.

thumbprint=$(az webapp config ssl upload \
    --name <app-name> \
    --resource-group <resource-group-name> \
    --certificate-file <path-to-PFX-file> \
    --certificate-password <PFX-password> \
    --query thumbprint \
    --output tsv)

O comando seguinte utiliza o thumbprint do comando anterior para adicionar um enlace SSL baseado em SNI.The following command adds an SNI-based SSL binding, using the thumbprint from the previous command.

az webapp config ssl bind \
    --name <app-name> \
    --resource-group <resource-group-name> \
    --certificate-thumbprint $thumbprint \
    --ssl-type SNI \

O comando a seguir força o aplicativo a usar HTTPS.The following command forces the app to use https.

az webapp update \
    --name <app-name> \
    --resource-group <resource-group-name> \
    --https-only true

O seguinte comando impõe a versão mínima do TLS de 1.2.The following command enforces minimum TLS version of 1.2.

az webapp config set \
    --name <app-name> \
    --resource-group <resource-group-name> \
    --min-tls-version 1.2

Azure PowerShellAzure PowerShell

Nota

Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Pode continuar a utilizar o módulo AzureRM, que continuará a receber correções de erros até, pelo menos, dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para obter mais informações sobre o novo módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

O comando seguinte carrega um ficheiro PFX exportado e adiciona um enlace SSL baseado em SNI.The following command uploads an exported PFX file and adds an SNI-based SSL binding.

New-AzWebAppSSLBinding `
    -WebAppName <app_name> `
    -ResourceGroupName <resource_group_name> `
    -Name <dns_name> `
    -CertificateFilePath <path_to_PFX_file> `
    -CertificatePassword <PFX_password> `
    -SslState SniEnabled

Usar certificados em seu códigoUse certificates in your code

Se seu aplicativo precisar se conectar a recursos remotos e o recurso remoto exigir autenticação de certificado, você poderá carregar certificados públicos ou privados para seu aplicativo.If your app needs to connect to remote resources, and the remote resource requires certificate authentication, you can upload public or private certificates to your app. Você não precisa associar esses certificados a qualquer domínio personalizado em seu aplicativo.You don't need to bind these certificates to any custom domain in your app. Para obter mais informações, veja Use an SSL certificate in your application code in Azure App Service (Utilizar um certificado SSL no código da sua aplicação no Serviço de Aplicações do Azure).For more information, see Use an SSL certificate in your application code in Azure App Service.

Passos seguintesNext steps

Neste tutorial, ficou a saber como:In this tutorial, you learned how to:

  • Atualizar o escalão de preço da sua aplicaçãoUpgrade your app's pricing tier
  • Vincular o certificado personalizado ao Serviço de AplicaçõesBind your custom certificate to App Service
  • Renovar certificadosRenew certificates
  • Impor HTTPSEnforce HTTPS
  • Impor TLS 1.1/1.2Enforce TLS 1.1/1.2
  • Automatizar a gestão de TLS com scriptsAutomate TLS management with scripts

Avance para o próximo tutorial para saber como utilizar a Rede de Entrega de Conteúdos do Azure.Advance to the next tutorial to learn how to use Azure Content Delivery Network.

Add a Content Delivery Network (CDN) to an Azure App Service (Adicionar uma Rede de Entrega de Conteúdos (CDN) ao Serviço de Aplicações do Azure)Add a Content Delivery Network (CDN) to an Azure App Service

Para obter mais informações, veja Use an SSL certificate in your application code in Azure App Service (Utilizar um certificado SSL no código da sua aplicação no Serviço de Aplicações do Azure).For more information, see Use an SSL certificate in your application code in Azure App Service.