Share via


Gerar um certificado autoassinado do Gateway de Aplicação do Azure com uma AC 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 disposição remove o uso de certificados de autenticação (certificados Leaf individuais) que eram exigidos na SKU v1. O certificado raiz é um X.509(. CER) formatar certificado raiz do servidor de certificados de back-end. 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 ele for assinado por uma autoridade de certificação conhecida (por exemplo, GoDaddy ou DigiCert). Nesse caso, não é necessário carregar explicitamente o certificado raiz. Para obter mais informações, consulte Visão geral da terminação TLS e TLS de ponta a ponta com o 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.

Nota

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 hashes e conjuntos de cifras desatualizados que podem não ser fortes. Para maior segurança, adquira um certificado assinado por uma autoridade de certificação conhecida.

Você pode usar as seguintes opções para gerar seu certificado privado para conexões TLS de back-end.

  1. Use a ferramenta de gerador de certificado privado com um clique. Usando o nome de domínio (Nome comum) fornecido, essa ferramenta executa as mesmas etapas documentadas neste artigo para gerar certificados raiz e de servidor. 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 neste artigo se quiser fazer isso inteiramente por conta própria.

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

Pré-requisitos

Criar um certificado de autoridade de certificação raiz

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

Criar a chave raiz

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

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

Criar um certificado raiz e auto-assiná-lo

  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, digite a senha para a chave raiz e as informações organizacionais para a autoridade de certificação personalizada, como País/Região, Estado, Organização, UO e o nome de domínio totalmente qualificado (este é o domínio do emissor).

    create root certificate

  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. Você usará isso para assinar o certificado do servidor.

Criar um certificado de servidor

Em seguida, você criará 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 é dada a uma autoridade de certificação ao solicitar um certificado. A autoridade de certificação emite o certificado para essa solicitação específica.

Nota

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 é e o CN do certificado do servidor é www.contoso.comwww.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 é o domínio do site e deve ser diferente do emissor.

    Server certificate

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
    

    Certificate verification

  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

Em seu servidor Web, configure o TLS usando os arquivos fabrikam.crt e fabrikam.key. Se o seu servidor Web não puder aceitar dois ficheiros, pode combiná-los num único ficheiro .pem ou .pfx utilizando 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:

NGINX with TLS

Acesse o servidor para verificar a configuração

  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.

    Trusted root certificates

    Nota

    Presume-se que o DNS tenha sido 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 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

OpenSSL certificate verification

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.

Screenshot of adding a certificate using the portal.

Azure PowerShell

Ou, você pode usar a CLI do Azure ou o Azure PowerShell para carregar o certificado raiz. O código a seguir é um exemplo do Azure PowerShell.

Nota

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. Clique na visualização Integridade do back-end do gateway do aplicativo para verificar se a sonda está íntegra.
  2. Você deve ver que o Status é Íntegro para a sonda HTTPS.

HTTPS probe

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.