Administración de certificados con AWS Certificate Manager - Amazon CloudFront

Administración de certificados con AWS Certificate Manager

AWS Certificate Manager (ACM) almacena los certificados de cliente que CloudFront presenta a los servidores de origen durante la autenticación de TLS mutua (origen).

Compatibilidad de la autoridad de certificación

CloudFront Mutual TLS (origen) requiere certificados de cliente con uso ampliado de claves (EKU) para la autenticación de clientes de TLS. Debido a este requisito, debe emitir los certificados de la autoridad de certificación e importarlos a AWS Certificate Manager. Las características automáticas de aprovisionamiento y renovación de certificados de ACM no están disponibles para los certificados de cliente de TLS mutuas (de origen). CloudFront Mutual TLS (origen) admite certificados de cliente de dos orígenes:

  • Autoridad de certificación privada de AWS: puede emitir certificados desde una autoridad de certificación privada de AWS mediante plantillas de certificados que incluyan la autenticación de cliente de TLS en el campo Uso ampliado de claves (como la plantilla EndEntityClientAuthCertificate). Después de emitir el certificado de la autoridad de certificación privada de AWS, debe importarla en ACM en la región Este de EE. UU. (Norte de Virginia) (us-east-1). Este enfoque proporciona los beneficios de seguridad de autoridad de certificación privada de AWS y, al mismo tiempo, permite controlar la administración del ciclo de vida de los certificados.

  • Autoridades de certificación privada de terceros: también puede emitir certificados desde su infraestructura de autoridad de certificación privada existente e importarlos a ACM. Esto permite mantener los procesos actuales de administración de certificados y, al mismo tiempo, aprovechar las capacidades de TLS mutuo (origen) de CloudFront. Los certificados deben incluir la autenticación de cliente de TLS en el campo Uso ampliado de claves y deben estar en formato PEM con el certificado, la clave privada y la cadena de certificados.

importante

Tanto para las autoridades de certificación privadas de AWS como para las de terceros, es responsable de supervisar las fechas de caducidad de los certificados e importar los certificados renovados a ACM antes de que caduquen. La característica de renovación automática de ACM no se aplica a los certificados importados que se utilizan para TLS mutua (origen).

Requisitos y especificaciones de certificados

Requisitos del certificado de cliente

  • Formato: formato PEM (Correo con privacidad mejorada)

  • Componentes: certificado, clave privada y cadena de certificado

  • Profundidad máxima de la cadena de certificados: 3 (certificado de hoja + certificado intermedio + certificado raíz)

  • Tamaño máximo de la cadena de certificados: 64 KB

  • Tamaño del certificado: no puede superar los 96 KB

  • Tamaño máximo de clave privada: 5 KB (restricción de ACM)

  • Número máximo de ARN de certificados mTLS de origen único que se pueden agregar o modificar por cada llamada a la API de creación o actualización de distribución de CloudFront: 5

  • Región: los certificados se deben almacenar en ACM en la región Este de EE. UU. (Norte de Virginia) (us-east-1)

Especificaciones de certificados compatibles

  • Tipo de certificado: X.509v3

  • Algoritmos de clave pública:

    • RSA: 2048 bits

    • ECDSA: P-256

  • Algoritmos de firma:

    • SHA256, SHA384, SHA512 con RSA

    • SHA256, SHA384, SHA512 con ECDSA

    • SHA256, SHA384, SHA512 con RSASSA-PSS con MGF1

  • Uso ampliado de claves (obligatorio): el certificado requiere la extensión del uso ampliado de claves (EKU) configurada como autenticación de cliente de TLS, lo que garantiza que está autorizado para fines de mTLS

Requisitos del certificado del servidor

Los servidores de origen deben presentar certificados de autoridades de certificación de confianza pública durante el establecimiento de comunicación de TLS mutua. Para obtener detalles completos sobre los requisitos del certificado del servidor de origen, consulte Requisitos para usar certificados SSL/TLS con CloudFront.

Solicitud o importación de un certificado

Antes de habilitar TLS mutua (origen), debe tener un certificado de cliente disponible en ACM.

Solicitud e importación de un certificado de la autoridad de certificación privada de AWS

Requisitos previos:

  • Una autoridad de certificación privada de AWS configurada en la cuenta

  • Permiso para emitir certificados de la autoridad de certificación privada de AWS

  • Permiso para importar certificados en ACM

  • Un ARN de plantilla de certificado con Extended key usage:TLS web client authentication que se adapta al caso de uso

  • Instale OpenSSL, AWS CLI y jq (para analizar JSON).

Solicitud de un certificado de PCA e importación en ACM (AWS CLI)
  1. Configure el ARN de la autoridad de certificación privada en una variable para facilitar su reutilización.

    PCA_ARN="arn:aws:acm-pca:region:account:certificate-authority/12345678..."
  2. Utilice OpenSSL para generar una clave privada ECDSA P-256 (curva prime256v1) y una solicitud de firma de certificado (CSR), lo que garantiza que el indicador -nodes se utilice para mantener la clave privada sin cifrar, tal como se requiere para la importación de ACM.

    openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes \ -keyout private.key \ -out request.csr \ -subj "/CN=client.example.com"
  3. Envíe CSR a la autoridad de certificación privada de AWS para emitir un certificado, que devuelva el ARN del certificado recién emitido.

    CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn "$PCA_ARN" \ --csr fileb://request.csr \ --signing-algorithm "SHA256WITHECDSA" \ --validity Value=365,Type="DAYS" \ --template-arn arn:aws:acm-pca:::template/EndEntityCertificate/V1 \ --query 'CertificateArn' --output text)
  4. Recupere el paquete de certificados de AWS PCA mediante el comando get-certificate, que devuelve el certificado de hoja y la cadena. A continuación, utilice jq para separarlos en archivos distintos.

    # Retrieve the full certificate bundle in JSON format aws acm-pca get-certificate \ --certificate-authority-arn "$PCA_ARN" \ --certificate-arn "$CERT_ARN" \ --output json > full_cert.json # Split into Leaf and Chain jq -r '.Certificate' full_cert.json > leaf_cert.pem jq -r '.CertificateChain' full_cert.json > cert_chain.pem
  5. Importe la clave privada no cifrada, el certificado de hoja y la cadena de certificados a AWS ACM mediante el protocolo fileb:// para gestionar correctamente los datos de los archivos binarios en la CLI.

    aws acm import-certificate \ --certificate fileb://leaf_cert.pem \ --private-key fileb://private.key \ --certificate-chain fileb://cert_chain.pem \ --region us-east-1 \ --query 'CertificateArn' \ --output text

Importación de un certificado de una autoridad de certificación de terceros

Requisitos previos:

  • Un certificado, una clave privada no cifrada y la cadena de certificados de la autoridad de certificación en formato PEM

  • El certificado debe incluir el uso ampliado de claves para la autenticación del cliente de TLS

  • Permisos para importar certificados en ACM

Importación de un certificado en ACM (AWS CLI)
aws acm import-certificate \ --certificate fileb://certificate.pem \ --private-key fileb://private-key.pem \ --certificate-chain fileb://certificate-chain.pem \ --region us-east-1 \ --query 'CertificateArn' \ --output text

Siguientes pasos

Tras obtener o importar el certificado de cliente en ACM, puede configurar el servidor de origen para que requiera la autenticación de TLS mutua y habilite TLS mutua (origen) en la distribución de CloudFront. Para obtener instrucciones sobre cómo habilitar TLS mutua (origen) en CloudFront, consulte la siguiente sección “Habilitar TLS mutua (origen) para las distribuciones de CloudFront”.