Administración de certificados de servidor en IAM - AWS Identity and Access Management

Administración de certificados de servidor en IAM

Para habilitar las conexiones HTTPS en su sitio web o aplicación en AWS, necesita un certificado de servidor SSL/TLS. Si se trata de una región compatible con AWS Certificate Manager (ACM), le recomendamos que utilice ACM para aprovisionar, administrar e implementar los certificados de servidor. En las regiones no compatibles, debe utilizar IAM como Certificate Manager. Para saber qué regiones admite , consulte puntos finales y cuotas de AWS Certificate Manager en la Referencia general de AWS.

ACM es la herramienta preferida para aprovisionar, administrar e implementar los certificados de servidor. Con ACM puede solicitar un certificado o implementar un certificado de ACM existente o un certificado externo en los recursos de AWS. Los certificados que proporciona ACM son gratuitos y se renuevan automáticamente. En las regiones compatibles, puede utilizar ACM para administrar los certificados de servidor desde la consola o mediante programación. Para obtener más información sobre ACM, consulte la Guía del usuario de AWS Certificate Manager. Para obtener más información sobre cómo solicitar un certificado de ACM, consulte Solicitar un certificado público o Solicitar un certificado privado en la Guía del usuario de AWS Certificate Manager. Para obtener más información sobre la importación de certificados de terceros en ACM, consulte Importar certificados en la Guía del usuario de AWS Certificate Manager.

Utilice IAM como Certificate Manager solo cuando tenga que admitir conexiones HTTPS en una región que no es compatible con ACM. IAM cifra de forma segura sus claves privadas y almacena la versión cifrada en el almacenamiento de certificados SSL de IAM. IAM admite la implementación de certificados de servidor en todas las regiones, pero debe obtener su certificado de un proveedor externo para utilizarlo con AWS. No puede cargar un certificado de ACM en IAM. Además, no puede administrar los certificados desde la consola de IAM.

Para obtener más información acerca de cómo cargar certificados de terceros en IAM, consulte los siguientes temas.

Carga de un certificado de servidor (API de AWS)

Para cargar un certificado de servidor en IAM, debe proporcionar el certificado y la clave privada correspondiente. Si el certificado no está autofirmado, también debe proporcionar una cadena de certificados. (No necesita una cadena de certificados para cargar un certificado autofirmado). Antes de cargar un certificado, asegúrese de que dispone de todos estos elementos y de que cumplen los siguientes criterios:

  • El certificado debe ser válido en el momento de la carga. No puede cargar un certificado antes de que empiece su periodo de validez (la fecha NotBefore del certificado) o después de que expire (la fecha NotAfter del certificado).

  • La clave privada no debe estar cifrada. No puede cargar una clave privada que esté protegida por una contraseña o frase de contraseña. Para ayudar a descifrar una clave privada cifrada, consulte Solución de problemas.

  • El certificado, la clave privada y la cadena de certificados deben tener todos codificación PEM. Para ayudar a convertir estos elementos al formato PEM, consulte Solución de problemas.

Para utilizar la API de IAM para cargar un certificado, envíe una solicitud UploadServerCertificate. El siguiente ejemplo muestra cómo hacerlo con la AWS Command Line Interface (AWS CLI). El ejemplo supone lo siguiente:

  • El certificado codificado en PEM se guarda en un archivo llamado Certificate.pem.

  • La cadena de certificados codificados en PEM se guarda en un archivo llamado CertificateChain.pem.

  • La clave privada codificada en PEM sin cifrar se guarda en un archivo llamado PrivateKey.pem.

  • (Opcional) Debe etiquetar el certificado del servidor con un par de valor de clave. Por ejemplo, puede agregar la clave de etiqueta Department y el valor de la etiqueta Engineering para ayudarlo a identificar y organizar los certificados.

Para utilizar los siguientes comandos de ejemplo, sustituya estos nombres de archivo por los suyos. Reemplace ExampleCertificate por un nombre para el certificado cargado. Si desea etiquetar el certificado, reemplace el par clave-valor de la etiqueta ExampleKey y ExampleValue con sus propios valores. Escriba el comando en una línea continua. El siguiente ejemplo incluye saltos de línea y espacios adicionales para facilitar su lectura.

aws iam upload-server-certificate --server-certificate-name ExampleCertificate --certificate-body file://Certificate.pem --certificate-chain file://CertificateChain.pem --private-key file://PrivateKey.pem --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'

Si el comando anterior se ejecuta correctamente, devolverá los metadatos del certificado cargado, incluido su Amazon Resource Name (ARN), su nombre descriptivo, su identificador (ID), su fecha de vencimiento, etiquetas y otra información.

nota

Si va a cargar un certificado de servidor para utilizarlo con Amazon CloudFront, debe especificar una ruta mediante la opción --path. La ruta debe empezar con /cloudfront y debe incluir una barra inclinada al final (por ejemplo, /cloudfront/test/).

Para utilizar las AWS Tools for Windows PowerShell para cargar un certificado, utilice Publish-IAMServerCertificate.

Recuperación de un certificado de servidor (API de AWS)

Para utilizar la API de IAM para recuperar un certificado, envíe una solicitud GetServerCertificate. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI. Sustituya ExampleCertificate por el nombre del certificado a recuperar.

aws iam get-server-certificate --server-certificate-name ExampleCertificate

Si el comando anterior se ejecuta correctamente, devolverá el certificado, la cadena de certificados (si se ha cargado alguna) y los metadatos del certificado.

nota

No puede descargar o recuperar una clave privada de IAM después de cargarla.

Para utilizar las AWS Tools for Windows PowerShell para recuperar un certificado, utilice Get-IAMServerCertificate.

Lista de los certificados de servidor (API de AWS)

Para utilizar la API de IAM para realizar una lista de los certificados de servidor cargados, envíe una solicitud ListServerCertificates. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

aws iam list-server-certificates

Si el comando anterior se ejecuta correctamente, devolverá una lista que contiene los metadatos de cada certificado.

Para utilizar las AWS Tools for Windows PowerShell para realizar una lista de los certificados de servidor cargados, utilice Get-IAMServerCertificates.

Etiquetado y desetiquetado de certificados de servidor (API de AWS)

Puede asociar etiquetas a sus recursos de IAM para organizar y controlar el acceso a ellos. Para utilizar la API de IAM para etiquetar un certificado de servidor existente, envíe una solicitud TagServerCertificate. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

aws iam tag-server-certificate --server-certificate-name ExampleCertificate --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'

Si el comando anterior se ejecuta correctamente, no devolverá ningún resultado.

Para utilizar la API de IAM para quitar la etiqueta de un certificado de servidor, envíe una solicitud UntagServerCertificate. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

aws iam untag-server-certificate --server-certificate-name ExampleCertificate --tag-keys ExampleKeyName

Si el comando anterior se ejecuta correctamente, no devolverá ningún resultado.

Cambio de nombre de un certificado de servidor o actualización de su ruta (API de AWS)

Para utilizar la API de IAM para cambiar el nombre de un certificado de servidor o para actualizar su ruta, envíe una solicitud UpdateServerCertificate. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

Para utilizar el siguiente comando de ejemplo, sustituya los nombres antiguo y nuevo del certificado y la ruta del certificado y escriba el comando en una línea continua. El siguiente ejemplo incluye saltos de línea y espacios adicionales para facilitar su lectura.

aws iam update-server-certificate --server-certificate-name ExampleCertificate --new-server-certificate-name CloudFrontCertificate --new-path /cloudfront/

Si este comando anterior se ejecuta correctamente, no devolverá ningún resultado.

Para utilizar las AWS Tools for Windows PowerShell para cambiar el nombre de un certificado de servidor o para actualizar su ruta, utilice Update-IAMServerCertificate.

Eliminación de un certificado de servidor (API de AWS)

Para utilizar la API de IAM para eliminar un certificado de servidor, envíe una solicitud DeleteServerCertificate. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

Para utilizar el siguiente comando de ejemplo, sustituya ExampleCertificate por el nombre del certificado a eliminar.

aws iam delete-server-certificate --server-certificate-name ExampleCertificate

Si este comando anterior se ejecuta correctamente, no devolverá ningún resultado.

Para utilizar las AWS Tools for Windows PowerShell para eliminar un certificado de servidor, utilice Remove-IAMServerCertificate.

Solución de problemas

Antes de cargar un certificado en IAM, debe asegurarse de que el certificado, la clave privada y la cadena de certificados estén codificados en PEM. También debe asegurarse de que la clave privada no esté cifrada. Vea los siguientes ejemplos.

ejemplo Ejemplo de certificado codificado por PEM
-----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE-----
ejemplo Ejemplo de clave privada sin cifrar y codificada en PEM
-----BEGIN RSA PRIVATE KEY----- Base64-encoded private key -----END RSA PRIVATE KEY-----
ejemplo Ejemplo de cadena de certificados codificada en PEM

Una cadena de certificados contiene uno o más certificados. Puede utilizar un editor de texto, el comando copy de Windows o el comando cat de Linux para concatenar archivos de certificado en una cadena. Cuando incluye varios certificados, cada certificado debe certificar el certificado anterior. Puede hacerlo concatenando los certificados, incluyendo el certificado de CA raíz al final.

El siguiente ejemplo contiene tres certificados, pero una cadena de certificados podría contener más o menos certificados.

-----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE-----

Si estos elementos no tienen el formato adecuado para cargarlos en IAM, puede utilizar OpenSSL para convertirlos al formato adecuado.

Para convertir un certificado o cadena de certificados de DER a PEM

Utilice el comando OpenSSL x509, como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya Certificate.der por el nombre del archivo que contiene el certificado con codificación DER. Sustituya Certificate.pem por el nombre preferido del archivo de salida que va a contener el certificado con codificación PEM.

openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem

 

Para convertir una clave privada de DER a PEM

Utilice el comando OpenSSL rsa, como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya PrivateKey.der por el nombre del archivo que contiene la clave privada con codificación DER. Sustituya PrivateKey.pem por el nombre preferido del archivo de salida que va a contener la clave privada con codificación PEM.

openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem

 

Para descifrar una clave privada cifrada (eliminar la contraseña o frase de contraseña)

Utilice el comando OpenSSL rsa, como en el siguiente ejemplo. Para utilizar el siguiente comando de ejemplo, sustituya EncryptedPrivateKey.pem por el nombre del archivo que contiene la clave privada cifrada. Sustituya PrivateKey.pem por el nombre preferido del archivo de salida que va a contener la clave privada no cifrada con codificación PEM.

openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem

 

Para convertir un paquete de certificados de PKCS #12 (PFX) a PEM

Utilice el comando OpenSSL pkcs12, como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya CertificateBundle.p12 por el nombre del archivo que contiene el paquete de certificados con codificación PKCS#12. Sustituya CertificateBundle.pem por el nombre preferido del archivo de salida que va a contener el paquete de certificado con codificación PEM.

openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes

 

Para convertir un paquete de certificados de PKCS#7 a PEM

Utilice el comando OpenSSL pkcs7, como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya CertificateBundle.p7b por el nombre del archivo que contiene el paquete de certificados con codificación PKCS#7. Sustituya CertificateBundle.pem por el nombre preferido del archivo de salida que va a contener el paquete de certificado con codificación PEM.

openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem