Compartir a través de


Generación de un certificado autofirmado de Azure Application Gateway con una entidad de certificación raíz personalizada

La SKU de Application Gateway v2 presenta el uso de certificados raíz de confianza para permitir conexiones TLS con los servidores back-end. Esta característica elimina la utilización de certificados de autenticación (certificados individuales de hoja) necesarios en la SKU v1. El certificado raíz es un certificado raíz en formato X.509 codificado en Base-64 (.CER) del servidor de certificados backend. Identifica la entidad de certificación raíz (CA) que emitió el certificado de servidor y el certificado de servidor se usa para la comunicación TLS/SSL.

Application Gateway confía en el certificado del sitio web de forma predeterminada si una ENTIDAD de certificación conocida (por ejemplo, GoDaddy o DigiCert) la firma. No es necesario cargar explícitamente el certificado raíz en ese caso. Para obtener más información, consulte Introducción a la terminación TLS y a TLS de extremo a extremo con Application Gateway. Sin embargo, si tiene un entorno de desarrollo y pruebas y no quiere comprar un certificado firmado por la ENTIDAD de certificación verificada, puede crear su propia CA raíz personalizada y un certificado hoja firmado por esa ENTIDAD de certificación raíz.

Note

Los certificados autogenerados no son de confianza de forma predeterminada y pueden ser difíciles de mantener. Además, pueden usar conjuntos de cifrado y hash obsoletos que no son seguros. Para mejorar la seguridad, compre un certificado firmado por una entidad de certificación conocida.

Use las siguientes opciones para generar el certificado privado para las conexiones TLS de back-end.

  1. Use la herramienta de generador de certificados privados. Con el nombre de dominio (nombre común) que se proporciona, esta herramienta realiza los mismos pasos que se documentan en este artículo para generar certificados raíz y servidor. Con los archivos de certificado generados, puede cargar inmediatamente el certificado raíz (. ARCHIVO CER) en la configuración de back-end de la puerta de enlace y la cadena de certificados correspondiente (. PFX) al servidor back-end. La contraseña del archivo PFX también se proporciona en el archivo ZIP descargado.

  2. Use comandos openSSL para personalizar y generar certificados según sus necesidades. Siga las instrucciones de este artículo si desea realizar este proceso por su cuenta.

En este artículo aprenderá a:

  • Creación de su propia entidad de certificación personalizada
  • Creación de un certificado autofirmado firmado por la entidad de certificación personalizada
  • Cargar un certificado raíz autofirmado en un Application Gateway para autenticar el servidor backend

Prerequisites

  • OpenSSL en un equipo que ejecuta Windows o Linux

    Aunque otras herramientas podrían estar disponibles para la administración de certificados, en este tutorial se usa OpenSSL. Puede encontrar OpenSSL agrupado con muchas distribuciones de Linux, como Ubuntu.

  • Un servidor web

    Por ejemplo, Apache, IIS o NGINX para probar los certificados.

  • SKU de Application Gateway v2

    Si no tiene una puerta de enlace de aplicaciones existente, consulte Inicio rápido: Tráfico web directo con Azure Application Gateway: Azure Portal.

Creación de un certificado de entidad de certificación raíz

Cree el certificado de entidad de certificación raíz mediante OpenSSL.

Creación de la clave raíz

  1. Inicie sesión en el equipo donde está instalado OpenSSL y ejecute el siguiente comando. Este comando crea una clave cifrada.

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

Crear un certificado raíz y firmarlo automáticamente

  1. Use el comando siguiente para generar la solicitud de firma de certificado (CSR).

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. Cuando se le solicite, escriba la contraseña de la clave raíz y la información de la organización de la entidad de certificación personalizada, como país o región, estado, organización, unidad organizativa y el nombre de dominio completo (este dominio es el emisor).

    Captura de pantalla de la creación del certificado raíz.

  3. Use el comando siguiente para generar el certificado raíz.

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

    Los comandos anteriores crean el certificado raíz. Use este certificado para firmar el certificado de servidor.

Crear un certificado de servidor

A continuación, creará un certificado de servidor mediante OpenSSL.

Creación de la clave del certificado

Use el siguiente comando para generar la clave para el certificado de servidor.

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

Crear el CSR (solicitud de firma de certificados)

La CSR es una clave pública que se proporciona a una entidad de certificación al solicitar un certificado. La ENTIDAD de certificación emite el certificado para esta solicitud específica.

Note

El CN (nombre común) del certificado de servidor debe ser diferente del dominio del emisor. Por ejemplo, en este caso, el CN del emisor es www.contoso.com y el CN del certificado de servidor es www.fabrikam.com.

  1. Use el siguiente comando para generar el CSR:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. Cuando se le solicite, escriba la contraseña de la clave raíz y la información de la organización para la CA personalizada: País o región, Estado, Organización, UO y el nombre de dominio completo. Este dominio es el dominio del sitio web y debe ser diferente del emisor.

    Captura de pantalla del certificado de servidor.

Generar el certificado con el CSR y la clave y firmarlo con la clave raíz de la entidad de certificación

  1. Use el comando siguiente para crear el certificado:

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

Comprobación del certificado recién creado

  1. Use el siguiente comando para imprimir la salida del archivo CRT y comprobar su contenido:

    openssl x509 -in fabrikam.crt -text -noout
    

    Captura de pantalla de la comprobación del certificado.

  2. Compruebe los archivos del directorio y asegúrese de que tiene los archivos siguientes:

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

Configuración del certificado en la configuración de TLS del servidor web

En el servidor web, configure TLS mediante los archivos fabrikam.crt y fabrikam.key. Si el servidor web no puede tomar dos archivos, puede combinarlos en un único archivo .pem o .pfx mediante comandos OpenSSL.

IIS

Para obtener instrucciones sobre cómo importar el certificado y cargarlos como certificado de servidor en IIS, vea HOW TO: Install Imported Certificates on a Web Server in Windows Server 2003.

Para obtener instrucciones de enlace TLS, consulte Configuración de SSL en IIS 7.

Apache

La siguiente configuración es un host virtual de ejemplo configurado para SSL en 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

La siguiente configuración es un bloque de servidor NGINX de ejemplo con la configuración de TLS:

Captura de pantalla de NGINX con TLS.

Acceso al servidor con el certificado autofirmado

  1. Agregue el certificado raíz al almacén raíz de confianza de su equipo. Al acceder al sitio web, asegúrese de que toda la cadena de certificados se ve en el explorador.

    Captura de pantalla de los certificados raíz de confianza.

    Note

    DNS debe configurarse para que apunte el nombre del servidor web (en este ejemplo, www.fabrikam.com) a la dirección IP del servidor web. Si no es así, puede editar el archivo de hosts para resolver el nombre.

  2. Vaya a su sitio web y haga clic en el icono de bloqueo en el cuadro de dirección del explorador para comprobar la información del sitio y el certificado.

Comprobación de la configuración con OpenSSL

O bien, puede usar OpenSSL para comprobar el certificado.

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

Captura de pantalla de la comprobación de certificados openSSL.

Carga del certificado raíz en la configuración HTTP de Application Gateway

Para cargar el certificado en Application Gateway, debe exportar el certificado .crt a un formato de .cer codificado en Base-64. Dado que .crt ya contiene la clave pública en el formato codificado en base 64, simplemente cambie el nombre de la extensión de archivo de .crt a .cer.

Azure portal

Para cargar el certificado raíz de confianza desde el portal, seleccione Configuración de Backend y seleccione HTTPS en el Protocolo Backend.

Captura de pantalla de la adición de un certificado mediante el portal.

Azure PowerShell

O bien, use la CLI de Azure o Azure PowerShell para cargar el certificado raíz. El código siguiente es un ejemplo de Azure PowerShell.

Note

En el ejemplo siguiente se agrega un certificado raíz de confianza a la puerta de enlace de aplicaciones, se crea una nueva configuración HTTP y se agrega una nueva regla, suponiendo que el grupo de back-end y el agente de escucha ya existen.

## 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

Comprobación del estado del back-end de Application Gateway

  1. Seleccione la vista Estado de back-end de la instancia de Application Gateway para comprobar si el estado del sondeo es correcto.
  2. Debería ver que el estado es Saludable para el sondeo HTTPS.

Captura de pantalla del sondeo HTTPS.

Pasos siguientes

Para obtener más información sobre SSL\TLS en Application Gateway, consulte Introducción a la terminación TLS y a TLS de extremo a extremo con Application Gateway.