Compartilhar via


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

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

O Gateway de Aplicativo confiará no certificado do seu site por padrão se uma AC conhecida (por exemplo, GoDaddy ou DigiCert) o assinar. O carregamento explícito do certificado raiz não é necessário nesse caso. Para saber mais, confira Visão geral da terminação de TLS e TLS de ponta a ponta com um Gateway de Aplicativo. No entanto, se você tiver um ambiente de desenvolvimento/teste e não quiser comprar um certificado emitido por uma Autoridade Certificadora (AC) verificada, poderá criar sua própria Autoridade Certificadora Raiz personalizada e um certificado final assinado por essa AC raiz.

Note

Certificados autogerados não são confiáveis por padrão e podem ser difíceis de manter. Além disso, eles podem usar conjuntos de hash e criptografia desatualizados que não são fortes. Para obter mais segurança, adquira um certificado assinado por uma autoridade de certificação conhecida.

Use as opções a seguir para gerar seu certificado privado para conexões TLS de back-end.

  1. Use a ferramenta de gerador de certificado privado. Usando o nome de domínio (Nome Comum) que você fornece, essa ferramenta executa as mesmas etapas documentadas neste artigo para gerar certificados Raiz e Servidor. Com os arquivos de certificado gerados, você pode carregar imediatamente o arquivo de certificado raiz (.CER) para a configuração de backend do seu gateway e a cadeia de certificação correspondente (.PFX) para o servidor de backend. A senha do arquivo PFX também é fornecida no arquivo ZIP baixado.

  2. Use comandos OpenSSL para personalizar e gerar certificados de acordo com suas necessidades. Continue seguindo as instruções neste artigo se quiser fazer esse processo inteiramente por conta própria.

Neste artigo, você aprenderá a:

  • Criar sua própria autoridade de certificação personalizada
  • Criar um certificado autoassinado assinado por sua AC personalizada
  • Fazer upload de um certificado raiz autoassinado para um Gateway de Aplicativo para autenticar o servidor back-end

Prerequisites

  • OpenSSL em um computador executando o Windows ou Linux

    Embora outras ferramentas possam estar disponíveis para gerenciamento de certificados, este tutorial usa o OpenSSL. Você pode encontrar o OpenSSL agrupado com muitas distribuições do Linux, como o Ubuntu.

  • Um servidor Web

    Por exemplo, Apache, IIS ou NGINX para testar os certificados.

  • SKU do Gateway de Aplicativo v2

    Se você não tiver um gateway de aplicativo existente, consulte Início Rápido: Direcionar o tráfego da Web com o Gateway de Aplicativo do Azure – portal do Azure.

Criar um certificado de AC raiz

Crie seu certificado de autoridade de certificação raiz usando o OpenSSL.

Criar a chave raiz

  1. Entre no computador em que o OpenSSL está instalado e execute o comando a seguir. Esse comando cria uma chave criptografada.

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

Criar um certificado raiz e autoassiná-lo

  1. Use o comando a seguir para gerar a CSR (Solicitação de Assinatura de Certificado).

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. Quando solicitado, digite a senha da chave raiz e as informações organizacionais da AC personalizada, como país/região, estado, organização, UO e o nome de domínio totalmente qualificado (esse domínio é o emissor).

    Captura de tela da criação do certificado raiz.

  3. Use o comando a seguir 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. Você usa esse certificado para assinar o certificado do servidor.

Criar um certificado do servidor

Em seguida, você cria um certificado de servidor usando o 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 (Solicitação de Assinatura de Certificado)

A CSR é uma chave pública que você fornece a uma AC ao solicitar um certificado. A AC emite o certificado para essa solicitação específica.

Note

O CN (Nome Comum) para o certificado do servidor deve ser diferente do domínio do emissor. Por exemplo, nesse 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 a CSR:

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

    Captura de tela do certificado do servidor.

Gerar o certificado usando o CSR e a chave, e assiná-lo com a chave raiz da CA.

  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 tela da verificação de 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

Definir o certificado nas configurações do TLS do servidor Web

No servidor Web, configure o TLS usando os arquivos fabrikam.crt e fabrikam.key. Se o servidor Web não puder levar dois arquivos, você poderá combiná-los em um único arquivo .pem ou .pfx usando comandos OpenSSL.

IIS

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

Para obter instruções de associação TLS, consulte Como configurar o 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 a configuração do TLS:

Captura de tela do NGINX com TLS.

Acessar o servidor com o certificado autoassinado

  1. Adicione o certificado raiz ao repositório raiz confiável do computador. Ao acessar o site, verifique se toda a cadeia de certificados é vista no navegador.

    Captura de tela 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 servidor Web. Caso contrário, você pode editar o arquivo de hosts para resolver o nome.

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

Verificar a configuração com o OpenSSL

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

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

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

Fazer upload do certificado raiz para as Configurações HTTP do Gateway de Aplicativo

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

portal do Azure

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

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

Azure PowerShell

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

Note

O exemplo a seguir adiciona um certificado raiz confiável ao gateway de aplicativo, cria uma nova configuração HTTP e adiciona uma nova regra, supondo que o pool de back-end e o ouvinte já existam.

## 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 a integridade do back-end do gateway de aplicativo

  1. Selecione a exibição Integridade de back-end do seu gateway de aplicativo para verificar se a investigação está íntegra.
  2. Você deve ver que o Status é Saudável para a sonda HTTPS.

Captura de tela da sonda HTTPS.

Próximas etapas

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