Quiero cargar un certificado de SSL e importarlo a AWS Identity and Access Management (IAM).
Breve descripción
Se recomienda cargar certificados de SSL en AWS Certificate Manager (ACM). Si utilizas algoritmos y tamaños de clave de certificado que no son compatibles actualmente con ACM o con los recursos asociados de AWS, también puedes cargar un certificado de SSL en IAM mediante la Interfaz de la línea de comandos de AWS (AWS CLI).
Antes de poder importar un certificado de SSL a IAM:
- El certificado debe ser válido en el momento de la carga. No puedes cargar un certificado antes de que comience su período de validez ni después de que caduque.
- El certificado, la clave privada y la cadena de certificados deben estar codificados en formato PEM. Para obtener más información, consulta la sección Ejemplo de cadena de certificados codificada en PEM en Administración de certificados de servidor.
Tras confirmar que el certificado cumple los criterios, asegúrate de que la cadena de certificados esté en el orden correcto y, a continuación, carga el certificado.
Solución
Confirmación de que la cadena de certificados está en el orden correcto
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, comprueba si estás utilizando la versión más reciente de la AWS CLI.
La cadena de certificados debe comenzar con el certificado generado por tu autoridad de certificación (CA) y terminar con el certificado raíz de la CA.
Nota: Si la cadena de certificados no está en el orden correcto, puede que se muestre el siguiente mensaje de error: «Se ha producido un error (MalformedCertificate) al llamar a la operación UploadServerCertificate: No se ha podido validar la cadena de certificados. La cadena de certificados debe comenzar con el certificado de firma inmediata, seguido de cualquier intermediario, por orden. El índice dentro de la cadena del certificado no válido es: -1»
La cadena de certificados codificada en PEM debe comenzar con «-----BEGIN CERTIFICATE-----» y acabar con «-----END CERTIFICATE-----», como a continuación:
-----BEGIN CERTIFICATE-----
Base64-encoded Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded Intermediate certificate 1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Optional: Base64-encoded Root certificate
-----END CERTIFICATE-----
Nota: Asegúrate de que el certificado no tenga espacios iniciales ni finales, ni tampoco prefijos ni sufijos a parte del bloque BEGIN y END.
La clave codificada en PEM debe utilizar el siguiente formato para evitar el mensaje de error «MalformedCertificate: no se ha podido analizar la clave privada»:
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
Carga del certificado
Carga el certificado mediante la ejecución del comando de la AWS CLI upload-server-certificate, como a continuación:
$ aws iam upload-server-certificate --server-certificate-name YourCertificate --certificate-body file://Certificate.pem --certificate-chain file://CertificateChain.pem --private-key file://PrivateKey.pem
Nota:
- Sustituye los nombres de los archivos y YourCertificate por los nombres de los archivos cargados y del certificado, respectivamente.
- Debes especificar el prefijo «file://» en los parámetros certificate-body, certificate-chain y private-key en la solicitud de la API. De lo contrario, se producirá un error en la solicitud y se mostrará el mensaje de error «MalformedCertificate: desconocido».
Una vez cargado el certificado, el comando upload-server-certificate de AWS devuelve metadatos para el certificado cargado, incluidos el ARN (Amazon Resource Name), el nombre intuitivo, el ID (identificador) y la fecha de vencimiento del certificado.
Para ver el certificado cargado, ejecuta el comando list-server-certificates de AWS CLI:
aws iam list-server-certificates
Nota: Si cargas un certificado de servidor para utilizarlo con Amazon CloudFront, debes especificar una ruta con --path. La ruta debe comenzar con /cloudfront y debe incluir una barra final, por ejemplo, /cloudfront/test/. Para obtener más información, consulta ¿Cómo puedo solucionar problemas con el uso de un certificado SSL personalizado para mi distribución de CloudFront?
Para eliminar el certificado, ejecuta el comando delete-server-certificate de AWS CLI, como a continuación:
$ aws iam delete-server-certificate --server-certificate-name YourCertificate
Información relacionada
Servicios integrados con ACM
Formato del certificado y de la clave para la importación