Partilhar via


Gerar um certificado autoassinado do Gateway de Aplicativo do Azure com uma CA raiz personalizada

O Application Gateway v2 SKU introduz o uso de certificados raiz confiáveis para permitir conexões TLS com os servidores back-end. Esta funcionalidade elimina o uso de certificados de autenticação (certificados Leaf individuais) que eram exigidos no SKU v1. O certificado raiz é um certificado raiz no formato X.509(.CER) codificado em Base-64 do servidor de certificados backend. Ele identifica a autoridade de certificação (CA) raiz que emitiu o certificado do servidor e o certificado do servidor é usado para a comunicação TLS/SSL.

O Application Gateway confia no certificado do seu site por padrão se uma Autoridade de Certificação conhecida (por exemplo, GoDaddy ou DigiCert) o assinar. Nesse caso, não é necessário carregar explicitamente o certificado root. Para mais informações, consulte Resumo da terminação de TLS e TLS de ponta a ponta com Application Gateway. No entanto, se você tiver um ambiente de desenvolvimento/teste e não quiser comprar um certificado assinado pela autoridade de certificação verificada, poderá criar sua própria autoridade de certificação raiz personalizada e um certificado folha assinado por essa autoridade de certificação raiz.

Note

Os certificados gerados automaticamente não são confiáveis por padrão e podem ser difíceis de manter. Além disso, podem utilizar conjuntos de hash e algoritmos de cifra desatualizados que não são seguros. Para maior segurança, adquira um certificado assinado por uma autoridade de certificação conhecida.

Use as seguintes opções para gerar o seu certificado privado para ligações TLS de backend.

  1. Usa a ferramenta de gerador de certificados privados. Ao usar o nome de domínio (Nome Comum) que fornece, esta ferramenta executa os mesmos passos documentados neste artigo para gerar certificados Root e Server. Com os arquivos de certificado gerados, você pode carregar imediatamente o certificado raiz (. CER) para a Configuração de back-end do seu gateway e a cadeia de certificados correspondente (. PFX) para o servidor back-end. A senha para o arquivo PFX também é fornecida no arquivo ZIP baixado.

  2. Use comandos OpenSSL para personalizar e gerar certificados de acordo com suas necessidades. Continue a seguir as instruções deste artigo se quiser fazer este processo inteiramente sozinho.

Neste artigo, você aprenderá a:

  • Crie sua própria Autoridade de Certificação personalizada
  • Criar um certificado autoassinado assinado pela sua autoridade de certificação personalizada
  • Carregue um certificado raiz autoassinado em um Application Gateway para autenticar o servidor back-end

Prerequisites

Criar um certificado de autoridade de certificação raiz

Crie o seu certificado de CA raiz usando OpenSSL.

Criar a chave raiz

  1. Inicie sessão no seu computador onde o OpenSSL está instalado e execute o seguinte comando. Este comando cria uma chave encriptada.

    openssl ecparam -out contoso.key -name prime256v1 -genkey
    

Crie um certificado raiz e assine por si próprio

  1. Use o comando a seguir para gerar a solicitação de assinatura de certificado (CSR).

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. Quando solicitado, escreva a palavra-passe da chave raiz e a informação organizacional da CA personalizada, como país/região, estado, organização, OU e o domínio totalmente qualificado (este domínio é o emissor).

    Captura de ecrã da criação de certificado raiz.

  3. Use o seguinte comando para gerar o certificado raiz.

    openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
    

    Os comandos anteriores criam o certificado raiz. Usa este certificado para assinar o seu certificado de servidor.

Criar um certificado de servidor

De seguida, cria um certificado de servidor usando OpenSSL.

Criar a chave do certificado

Use o comando a seguir para gerar a chave para o certificado do servidor.

openssl ecparam -out fabrikam.key -name prime256v1 -genkey

Criar o CSR (Pedido de Assinatura de Certificado)

O CSR é uma chave pública que se entrega a uma CA quando se solicita um certificado. A autoridade de certificação emite o certificado para essa solicitação específica.

Note

O CN (Common Name) para o certificado do servidor deve ser diferente do domínio do emissor. Por exemplo, neste caso, o CN do emissor é www.contoso.com e o CN do certificado do servidor é www.fabrikam.com.

  1. Use o seguinte comando para gerar o CSR:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. Quando solicitado, digite a senha para a chave raiz e as informações organizacionais para a autoridade de certificação personalizada: País/Região, Estado, Organização, UO e o nome de domínio totalmente qualificado. Este domínio pertence ao site e deve ser diferente do emissor.

    Captura de ecrã do certificado do servidor.

Gere o certificado com o CSR e a chave e assine-o com a chave raiz da autoridade de certificação

  1. Use o seguinte comando para criar o certificado:

    openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
    

Verificar o certificado recém-criado

  1. Use o seguinte comando para imprimir a saída do arquivo CRT e verificar seu conteúdo:

    openssl x509 -in fabrikam.crt -text -noout
    

    Captura de ecrã da verificação do certificado.

  2. Verifique os arquivos em seu diretório e verifique se você tem os seguintes arquivos:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • fabrikam.key

Configure o certificado nas configurações TLS do seu servidor Web

No teu servidor web, configura o TLS usando os ficheiros fabrikam.crt e fabrikam.key. Se o teu servidor web não conseguir aceitar dois ficheiros, podes combiná-los num único ficheiro .pem ou .pfx usando comandos OpenSSL.

IIS

Para obter instruções sobre como importar certificados e carregá-los como certificado de servidor no IIS, consulte COMO: Instalar certificados importados em um servidor Web no Windows Server 2003.

Para obter instruções de vinculação TLS, consulte Como configurar SSL no IIS 7.

Apache

A configuração a seguir é um exemplo de host virtual configurado para SSL no Apache:

<VirtualHost www.fabrikam:443>
      DocumentRoot /var/www/fabrikam
      ServerName www.fabrikam.com
      SSLEngine on
      SSLCertificateFile /home/user/fabrikam.crt
      SSLCertificateKeyFile /home/user/fabrikam.key
</VirtualHost>

NGINX

A configuração a seguir é um exemplo de bloco de servidor NGINX com configuração TLS:

Captura de ecrã do NGINX com TLS.

Acede ao servidor com o certificado auto-assinado

  1. Adicione o certificado raiz ao armazenamento raiz confiável da sua máquina. Ao acessar o site, verifique se toda a cadeia de certificados é vista no navegador.

    Captura de ecrã de certificados raiz confiáveis.

    Note

    O DNS deve ser configurado para apontar o nome do servidor web (neste exemplo, www.fabrikam.com) para o endereço IP do seu servidor web. Caso contrário, você pode editar o arquivo hosts para resolver o nome.

  2. Navegue até o site e clique no ícone de cadeado na caixa de endereço do navegador para verificar as informações do site e do certificado.

Verifique a configuração com OpenSSL

Ou, você pode usar OpenSSL para verificar o certificado.

openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts

Captura de ecrã da verificação do certificado OpenSSL.

Carregue o certificado raiz para as Configurações HTTP do Application Gateway

Para carregar o certificado no Application Gateway, você deve exportar o certificado .crt para um formato de .cer codificado em Base-64. Como .crt já contém a chave pública no formato codificado base-64, basta renomear a extensão do arquivo de .crt para .cer.

portal do Azure

Para carregar o certificado raiz confiável do portal, selecione as Configurações de back-end e selecione HTTPS no protocolo de back-end.

Captura de tela da adição de um certificado usando o portal.

Azure PowerShell

Ou então usa Azure CLI ou Azure PowerShell para carregar o certificado raiz. O código a seguir é um exemplo do Azure PowerShell.

Note

O exemplo seguinte adiciona um certificado raiz de confiança ao gateway da aplicação, cria uma nova configuração HTTP e adiciona uma nova regra, assumindo que o pool backend e o ouvinte já existem.

## Add the trusted root certificate to the Application Gateway

$gw=Get-AzApplicationGateway -Name appgwv2 -ResourceGroupName rgOne

Add-AzApplicationGatewayTrustedRootCertificate `
   -ApplicationGateway $gw `
   -Name CustomCARoot `
   -CertificateFile "C:\Users\surmb\Downloads\contoso.cer"

$trustedroot = Get-AzApplicationGatewayTrustedRootCertificate `
   -Name CustomCARoot `
   -ApplicationGateway $gw

## Get the listener, backend pool and probe

$listener = Get-AzApplicationGatewayHttpListener `
   -Name basichttps `
   -ApplicationGateway $gw

$bepool = Get-AzApplicationGatewayBackendAddressPool `
  -Name testbackendpool `
  -ApplicationGateway $gw

Add-AzApplicationGatewayProbeConfig `
  -ApplicationGateway $gw `
  -Name testprobe `
  -Protocol Https `
  -HostName "www.fabrikam.com" `
  -Path "/" `
  -Interval 15 `
  -Timeout 20 `
  -UnhealthyThreshold 3

$probe = Get-AzApplicationGatewayProbeConfig `
  -Name testprobe `
  -ApplicationGateway $gw

## Add the configuration to the HTTP Setting and don't forget to set the "hostname" field
## to the domain name of the server certificate as this will be set as the SNI header and
## will be used to verify the backend server's certificate. Note that TLS handshake will
## fail otherwise and might lead to backend servers being deemed as Unhealthy by the probes

Add-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $gw `
  -Name testbackend `
  -Port 443 `
  -Protocol Https `
  -Probe $probe `
  -TrustedRootCertificate $trustedroot `
  -CookieBasedAffinity Disabled `
  -RequestTimeout 20 `
  -HostName www.fabrikam.com

## Get the configuration and update the Application Gateway

$backendhttp = Get-AzApplicationGatewayBackendHttpSettings `
  -Name testbackend `
  -ApplicationGateway $gw

Add-AzApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $gw `
  -Name testrule `
  -RuleType Basic `
  -BackendHttpSettings $backendhttp `
  -HttpListener $listener `
  -BackendAddressPool $bepool

Set-AzApplicationGateway -ApplicationGateway $gw

Verificar o estado do back-end do gateway de aplicação

  1. Selecione a vista de Saúde do Backend do seu gateway de aplicação para verificar se a sonda está saudável.
  2. Você deve ver que o Status é Íntegro para a sonda HTTPS.

Captura de ecrã da sonda HTTPS.

Próximos passos

Para saber mais sobre SSL\TLS no Application Gateway, consulte Visão geral da terminação TLS e TLS de ponta a ponta com o Application Gateway.