Pide tu presupuesto ya!

Creación de certificados SSL de AWS desde cero (CLI y PowerShell)

Proteger sus aplicaciones web con certificados SSL/TLS no es sólo una buena práctica: es una necesidad. SSL (Secure Sockets Layer) y su sucesor TLS (Transport Layer Security) son protocolos que cifran los datos transmitidos entre el navegador de un usuario y su sitio web. Este cifrado garantiza que la información confidencial, como contraseñas, números de tarjetas de crédito y datos personales, permanezca privada y segura.

AWS Certificate Manager (ACM) ofrece una forma simplificada de aprovisionar, administrar e implementar certificados SSL/TLS para sus sitios web y aplicaciones basados ​​en AWS. En esta guía, lo guiaremos a través del proceso de creación de un certificado SSL utilizando AWS Certificate Manager a través de la interfaz de línea de comandos (CLI) de AWS, desde la configuración de los permisos necesarios hasta la solicitud del certificado.

Configurar permisos

Antes de que podamos crear un certificado, debemos configurar los permisos adecuados. Haremos esto creando un nuevo IAM (Gestión de identidad y acceso) usuario con permisos específicos para gestionar certificados.

1. Primero, autentíquese como usuario administrador:

Ingrese la clave de acceso proporcionada y la clave secreta cuando se le solicite.

Después de ejecutar este comando, se le pedirá que ingrese su ID de clave de acceso de AWS, clave de acceso secreta, nombre de región predeterminado y formato de salida predeterminado. Este paso es crucial porque configura su AWS CLI con las credenciales para realizar acciones en su cuenta de AWS.

El ID de clave de acceso y clave de acceso secreta son como un nombre de usuario y una contraseña para el acceso programático a su cuenta de AWS. Deben mantenerse en secreto y nunca compartirse. El nombre de la región determina con qué centro de datos de AWS interactuarán sus comandos y el formato de salida determina cómo la CLI de AWS le mostrará los resultados.

2. Cree un archivo de política que defina los permisos necesarios:

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "acm:DescribeCertificate",
           "acm:ListCertificates",
           "acm:GetCertificate",
           "acm:RequestCertificate"
         ],
         "Resource": "*"
       }
     ]
   }

Guarda esto como cert-policy.json.

Este archivo JSON define un política de IAM. En AWS, las políticas definen permisos: especifican qué acciones se permiten o deniegan en los recursos de AWS que están disponibles. Analicemos esta política:

  • El Version El campo es un elemento obligatorio que especifica la versión del idioma de la política.
  • El Statement La matriz contiene una o más declaraciones individuales. Cada declaración describe un conjunto de permisos.
  • Effect: Allow significa que las acciones enumeradas están permitidas.
  • Resource: * significa que esta política se aplica a todos los recursos. Es posible que desee restringir esto a ARN de certificados específicos en un entorno de producción para mayor seguridad.

Esta política permitirá a nuestro nuevo usuario describir, enumerar, obtener y solicitar certificados, todas las acciones que necesitamos para este tutorial.

Crear un nuevo usuario de IAM

aws iam create-user --user-name CertificateManager

Este comando crea un nuevo usuario de IAM en su cuenta de AWS con el nombre CertificateManager. Los usuarios de IAM son entidades que usted crea en AWS para representar a la persona o aplicación que lo utiliza para interactuar con AWS. Al crear un usuario específico para la administración de certificados, seguimos el principio de privilegio mínimo: otorgarle a este usuario solo los permisos que necesita para administrar certificados en lugar de acceso completo de administrador a su cuenta de AWS.

Generar claves de acceso para el nuevo usuario.

aws iam create-access-key --user-name CertificateManager --query 'AccessKey.[AccessKeyId,SecretAccessKey]' --output text > certificate_manager_credentials.txt

Este comando crea una nueva clave de acceso para el Administrador de certificados usuario y guarda el ID de la clave y el secreto en un archivo llamado certificado_administrador_credenciales.txt. Las claves de acceso son credenciales a largo plazo para un usuario de IAM. Constan de dos partes: un ID de clave de acceso (por ejemplo, AKIAIOSFODNN7EXAMPLE) y una clave de acceso secreta (por ejemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY).

El ID de la clave de acceso y la clave de acceso secreta se utilizan para realizar solicitudes programáticas a AWS. Estas credenciales deben mantenerse seguras y no compartirse. En un entorno de producción, normalmente se utilizan métodos más seguros para gestionarlos, como Administrador de secretos de AWS.

Crear y adjuntar la política

$policy = Get-Content -Raw ~/Downloads/cert-policy.json

$policy_arn = aws iam create-policy --policy-name CertificateManagerPolicy --policy-document $policy --query 'Policy.Arn' --output text

aws iam attach-user-policy --user-name CertificateManager --policy-arn $policy_arn

Estos comandos hacen tres cosas:

1. Lea el contenido del archivo de política que creamos anteriormente.

2. Cree una nueva política de IAM en AWS utilizando el contenido de ese archivo. El --query y --output Las opciones se utilizan para extraer solo el ARN (nombre de recurso de Amazon) de la política recién creada.

3. Adjunte la política a nuestro usuario CertificateManager.

Al adjuntar esta política al usuario, le otorgamos permiso al usuario de CertificateManager para realizar las acciones que definimos en la política (describir, enumerar, obtener y solicitar certificados).

Creando el certificado

Ahora que tenemos configurados los permisos necesarios, podemos crear nuestro certificado SSL:

1. Solicitar el certificado:

$certificateArn = $(aws acm request-certificate --domain-name atademos.com --validation-method DNS --region 'us-east-1')

Este comando solicita un nuevo certificado SSL/TLS de AWS Certificate Manager. Analicemos las opciones:

  • --domain-name atademos.com: Esto especifica el nombre de dominio para el cual está solicitando el certificado. Reemplace ‘atademos.com’ con su nombre de dominio.
  • --validation-method DNS: Esto le indica a ACM que utilice la validación de DNS para demostrar que usted es el propietario del dominio. ACM proporcionará un registro CNAME para agregar a la configuración DNS de su dominio.
  • --region 'us-east-1': Esto especifica la región de AWS donde se creará el certificado. ‘us-east-1’ es la región Este de EE. UU. (Norte de Virginia).

El comando devuelve el ARN del certificado recién creado, que estamos almacenando en el $certificateArn variable para su uso posterior.

2. Describa el certificado para verificar su creación:

aws acm describe-certificate --region 'us-east-1' --certificate-arn ($certificateArn | ConvertFrom-Json).CertificateArn

Este comando recupera y muestra los detalles del certificado que acabamos de crear. Utiliza el ARN que almacenamos en el paso anterior. The ConvertFrom-Json El cmdlet se utiliza porque el comando anterior devuelve una cadena JSON, que debemos convertir en un objeto de PowerShell para acceder a la propiedad CertificateArn.

El resultado de este comando incluirá detalles sobre el certificado, incluido su estado, nombre de dominio y método de validación. Es probable que el certificado esté en estado ‘PENDING_VALIDATION’, ya que aún debes completar el proceso de validación de dominio.

Conclusión

Siguiendo estos pasos, habrá creado correctamente un certificado SSL utilizando AWS Certificate Manager a través de la CLI de AWS. Este proceso demuestra el poder y la flexibilidad de las herramientas de línea de comandos de AWS para administrar los recursos de la nube.

Recuerde, deberá validar la propiedad del dominio después de crear el certificado. Deberá agregar un registro CNAME a la configuración DNS de su dominio para la validación de DNS.. Una vez validado, puede utilizar el certificado con servicios de AWS como Elastic Load Balancing o Amazon CloudFront para proteger sus aplicaciones web.

Mantenga siempre seguras sus credenciales y siga las mejores prácticas de AWS para la gestión de usuarios de IAM. Esto incluye rotar periódicamente las claves de acceso, utilizar el principio de privilegio mínimo al asignar permisos y monitorear el uso de estas credenciales a través de AWS CloudTrail.

A medida que se sienta más cómodo con AWS y la CLI, es posible que desee explorar la posibilidad de automatizar aún más este proceso, tal vez utilizando AWS CloudFormation o Terraform para administrar su infraestructura como código. Esto puede hacer que la creación y gestión de certificados sea aún más eficiente y repetible.

Written by

Leave a comment