View a markdown version of this page

AWS Proveedor de credenciales de carga de trabajo - AWS Certificate Manager

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS Proveedor de credenciales de carga de trabajo

El proveedor AWS de credenciales de carga de trabajo automatiza el uso de los certificados TLS públicos y privados exportados desde ACM. El proveedor recupera periódicamente los certificados y sus claves privadas, los escribe en las rutas configuradas y, de forma opcional, ejecuta un comando para volver a cargar los servicios dependientes, como los servidores web.

sugerencia

En el caso de los certificados de confianza pública, puede utilizar el protocolo ACME para automatizar la emisión y la renovación directamente en sus hosts con clientes ACME estándares del sector, sin necesidad de exportar los certificados de ACM. Para obtener más información, consulte Automatización de certificados ACME.

Puede utilizar el proveedor de credenciales de carga de trabajo con los siguientes entornos informáticos:

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • On-premises servidores con AWS credenciales

El proveedor de credenciales de carga de trabajo utiliza la suposición de funciones de IAM para recuperar los certificados. Se ejecuta de forma nativa como un servicio de sistema tanto en Linux como en Windows con un usuario dedicado con pocos privilegios y escribe archivos de certificados con permisos restringidos.

importante

Con este proveedor, solo se pueden usar certificados exportables. Para obtener más información, consulte AWS Certificate Manager certificados públicos exportables Exportación de un certificado privado.

El proveedor AWS de credenciales de carga de trabajo es de código abierto. Para ver el código fuente y las contribuciones, consulta el GitHub repositorio.

Cómo funciona la automatización de certificados

El proveedor usa un programador que actualiza cada certificado configurado en un intervalo fijo:

  • El intervalo de actualización es de 24 horas.

  • En cada ciclo, el proveedor exporta el certificado, lo compara con los archivos del disco y escribe nuevos archivos solo si el contenido ha cambiado.

  • Cuando se actualizan los archivos de certificado, refresh_command se ejecuta la configuración (por ejemplo, para volver a cargar NGINX o Apache).

  • Si el contenido del certificado no ha cambiado, se omite el comando refresh.

El proveedor realiza una actualización inicial cada vez que se inicia el sistema y poco después del inicio del servicio, con una pequeña fluctuación aleatoria para evitar llamadas sincronizadas a la API cuando varios proveedores de la flota inician operaciones simultáneas.

El proveedor también admite la recarga dinámica de la configuración, lo que permite añadir, eliminar o modificar certificados sin tener que volver a instalarlos. Para obtener más información, consulte Recarga de la configuración dinámica.

Requisitos previos

Antes de instalar el proveedor, asegúrese de disponer de lo siguiente:

  • Una instancia de Linux con systemd (Amazon Linux 2023, Ubuntu 20.04+ o RHEL 8+)

  • O una instancia de Windows que ejecute Windows Server 2016 o posterior con 5.1 o posterior PowerShell

  • Acceso de administrador para ejecutar el instalador

  • Un certificado exportable en ACM

  • Un rol de IAM con permisos de exportación de ACM (consulte) Permisos necesarios

  • AWS credenciales disponibles en la instancia (perfil de la instancia, variables de entorno o archivo de credenciales)

Instale el proveedor

Linux
  1. Cree el proveedor

    Cree el binario del proveedor a partir del código fuente u obtenga el binario prediseñado para su plataforma. Siga las instrucciones de Instalar Rust para instalar la cadena de herramientas de Rust.

    cargo build --release

    El ejecutable está en. target/release/aws-workload-credentials-provider

  2. Creación de un archivo de configuración

    Cree un archivo de configuración TOML con los detalles de su certificado. Para ver ejemplos, consulte Configure el proveedor. El instalador copia este archivo /etc/aws-workload-credentials-provider/config.toml automáticamente cuando se utiliza la --config opción.

  3. Ejecute el instalador de

    Ejecute el script de instalación como root:

    cd aws_workload_credentials_provider_common/configuration sudo ./install --config /path/to/your/config.toml
  4. (Opcional) Proporcione AWS credentials

    En las instancias de Amazon EC2 con un perfil de instancia adjunto, el proveedor obtiene las credenciales automáticamente. Para otros entornos, cree un archivo de anulación de systemd para inyectar las credenciales:

    sudo mkdir -p /etc/systemd/system/aws-workload-credentials-provider-acm.service.d sudo tee /etc/systemd/system/aws-workload-credentials-provider-acm.service.d/creds.conf > /dev/null <<EOF [Service] Environment="AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE" Environment="AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" Environment="AWS_REGION=us-west-2" EOF sudo systemctl daemon-reload sudo systemctl restart aws-workload-credentials-provider-acm
Windows
  1. Cree u obtenga el proveedor

    Cree el binario del proveedor a partir del código fuente para Windows u obtenga el binario prediseñado. Siga las instrucciones de Instalar Rust para instalar la cadena de herramientas de Rust.

    cargo build --release

    El ejecutable está en. target\release\aws-workload-credentials-provider.exe

  2. Creación de un archivo de configuración

    Cree un archivo de configuración TOML con los detalles de su certificado. Para ver ejemplos, consulte Configure el proveedor. El instalador copia este archivo C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml automáticamente cuando se utiliza el -Config parámetro.

  3. Ejecute el instalador de

    Ejecute el script de instalación como administrador:

    cd aws_workload_credentials_provider_common\configuration .\install.ps1 -Config C:\path\to\your\config.toml

    Para realizar la instalación sin iniciar el servicio:

    .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
  4. (Opcional) Proporcione AWS credentials

    En las instancias de Amazon EC2 con un perfil de instancia adjunto, el proveedor obtiene las credenciales automáticamente a través del IMDS. Para otros entornos, defina las variables de entorno para el servicio a través del Registro de Windows:

    $regPath = "HKLM:\SYSTEM\CurrentControlSet\Services\AWSWorkloadCredentialsProvider-ACM" $envVars = @( "AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE", "AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "AWS_REGION=us-west-2" ) New-ItemProperty -Path $regPath -Name "Environment" -Value $envVars -PropertyType MultiString -Force Restart-Service AWSWorkloadCredentialsProvider-ACM

Configure el proveedor

Cree un archivo de configuración TOML con los detalles del certificado. El instalador copia este archivo /etc/aws-workload-credentials-provider/config.toml cuando utilice la --config opción.

NGINX
[logging] log_level = "info" log_to_file = true [capabilities.acm] enabled = true [[capabilities.acm.certificates]] certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111" role_arn = "arn:aws:iam::123456789012:role/ACMExportRole" certificate_path = "/etc/pki/tls/certs/example.com.crt" private_key_path = "/etc/pki/tls/private/example.com.key" chain_path = "/etc/pki/tls/certs/example.com-chain.pem" refresh_command = "/usr/sbin/nginx -s reload"
Apache
[logging] log_level = "info" log_to_file = true [capabilities.acm] enabled = true [[capabilities.acm.certificates]] certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111" role_arn = "arn:aws:iam::123456789012:role/ACMExportRole" certificate_path = "/etc/ssl/certs/example.com.crt" private_key_path = "/etc/ssl/private/example.com.key" chain_path = "/etc/ssl/certs/example.com-chain.pem" refresh_command = "/bin/systemctl reload httpd"
Apache (Windows)
[logging] log_level = "info" log_to_file = true [capabilities.acm] enabled = true [[capabilities.acm.certificates]] certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111" role_arn = "arn:aws:iam::123456789012:role/ACMExportRole" certificate_path = 'C:\Apache24\conf\ssl\example.com.crt' private_key_path = 'C:\Apache24\conf\ssl\example.com.key' chain_path = 'C:\Apache24\conf\ssl\example.com-chain.pem' refresh_command = 'C:\Apache24\bin\httpd.exe -k restart'
nota

Si chain_path se omite, la cadena de certificados se anexa al archivo certificate_path para generar un archivo de cadena completa. Esto es compatible con los servidores web que esperan un único archivo que contenga el certificado y su cadena.

Recarga de la configuración dinámica

Puede actualizar la configuración del proveedor sin tener que volver a instalarla ejecutando el acm reload comando. Esto valida la nueva configuración, actualiza los permisos para que coincidan con las nuevas rutas de certificado y reinicia el servicio.

Los certificados eliminados de la configuración dejan de actualizarse. Los certificados nuevos comienzan su primera exportación inmediatamente. Cada certificado se ejecuta como una tarea independiente, por lo que un error en uno no afecta a los demás.

Linux
aws-workload-credentials-provider acm reload --config /path/to/new-config.toml
Windows
& 'C:\Program Files\AWS\WorkloadCredentialsProvider\bin\aws-workload-credentials-provider.exe' acm reload -Config C:\path\to\new-config.toml

Permisos necesarios

Credenciales base

Las credenciales base del proveedor (entorno o perfil de la instancia) deben poder asumir la función especificada en cada certificadorole_arn:

{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/ACMExportRole" }

Función de exportación de certificados

El rol especificado en role_arn requiere los siguientes permisos:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "acm:ExportCertificate", "Resource": "arn:aws:acm:us-west-2:123456789012:certificate/*" } ] }

La política de confianza del rol debe permitir que la identidad base del proveedor la asuma:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/EC2InstanceRole" }, "Action": "sts:AssumeRole" } ] }

Actualizar los permisos de comandos (Linux)

En Linux, el proveedor ejecuta el refresh_command proceso sudo configurado. El instalador genera una entrada sudoers /etc/sudoers.d/aws-workload-credentials-provider que permite al usuario proveedor ejecutar exactamente el comando configurado sin necesidad de solicitar una contraseña.

importante

Asegúrese de que /etc/sudoers incluye el /etc/sudoers.d directorio. El instalador avisa si esta directiva de inclusión no está presente. Sin ella, el archivo sudoers generado no tiene ningún efecto y los comandos de actualización fallarán.

En Windows, el proveedor activa la tarea refresh_command como una tarea programada por el SISTEMA.

Verificar la instalación

Tras la instalación, compruebe que el proveedor se esté ejecutando y que se estén redactando los certificados:

Linux
  1. Compruebe el estado del servicio:

    sudo systemctl status aws-workload-credentials-provider-acm
  2. Revise los registros de los proveedores:

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. Compruebe que los archivos de certificado existan:

    ls -la /etc/pki/tls/certs/example.com.crt ls -la /etc/pki/tls/private/example.com.key
  4. Valide el contenido del certificado:

    openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
Windows
  1. Compruebe el estado del servicio:

    Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
  2. Revise los registros de los proveedores:

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. Compruebe que los archivos de certificado existan:

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. Valide el contenido del certificado:

    $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\certs\example.com.crt") $cert | Select-Object Subject, NotBefore, NotAfter

Referencia de la configuración

Campo Obligatorio Predeterminado Description (Descripción)
logging.log_level No info Verbosidad del registro:debug,,,info, warn error none
logging.log_to_file No true Escribe los registros en el archivo (true) o stdout/stderr () false
capabilities.acm.enabled No false Habilite o deshabilite la capacidad ACM
certificates[].certificate_arn ARN del certificado ACM para exportar
certificates[].role_arn Función de IAM que el ARN asumirá en la llamada ExportCertificate
certificates[].certificate_path Ruta absoluta para escribir el archivo de certificado
certificates[].private_key_path Ruta absoluta para escribir el archivo de clave privada
certificates[].chain_path No Ruta absoluta para escribir la cadena de certificados. Si se omite, la cadena se añade a certificate_path
certificates[].refresh_command No Comando que se ejecuta después de actualizar los archivos de certificado. Debe ser una ruta absoluta
certificates[].certificate_and_chain_permission No 0600 Permisos de archivo para archivos de certificados y cadenas (modeformato Linux)
certificates[].key_permission No 0600 Permisos de archivo para el archivo de clave privada (modeformato Linux)

Registro

En Linux, el proveedor inicia sesión en/opt/aws/workload-credentials-provider/logs/acm_provider.log.

En Windows, el proveedor inicia sesión enC:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log. Los eventos de inicio y parada del servicio también se registran en el registro de eventos de aplicaciones de Windows, en la fuenteAWSWorkloadCredentialsProvider-ACM.

Rotación del registro: el proveedor crea un nuevo archivo de registro cuando el archivo actual alcanza los 10 MB y almacena hasta cinco archivos de registro archivados.

AWS registro de servicios: cuando el proveedor llamaExportCertificate, esa llamada se graba AWS CloudTrail con una cadena de agente de usuario que contieneaws-workload-credentials-provider. Las operaciones internas del proveedor (ciclos del planificador, escritura de archivos) aparecen únicamente en el registro local.

Puede configurar el registro con los log_to_file ajustes log_level y. Para obtener más información, consulte Referencia de la configuración.