Crear y firmar un certificado X509 - AWS Elastic Beanstalk

Crear y firmar un certificado X509

Puede crear un certificado X509 para su aplicación con OpenSSL. OpenSSL es una biblioteca de código abierto estándar que admite un amplio conjunto de funciones criptográficas, incluida la creación y firma de certificados x509. Para obtener más información acerca de OpenSSL, visite www.openssl.org.

nota

Solo necesita crear un certificado localmente si desea utilizar HTTPS en un entorno de una sola instancia o volver a cifrar en el back-end con un certificado autofirmado. Si dispone de un nombre de dominio, puede crear un certificado en AWS y utilizarlo con un entorno con balanceo de carga de forma gratuita mediante AWS Certificate Manager (ACM). Consulte Solicitar un certificado en la Guía del usuario de AWS Certificate Manager para obtener instrucciones.

Ejecute openssl version en la línea de comandos para saber si ya tiene instalado OpenSSL. Si no lo tiene, puede crear e instalar el código fuente mediante las instrucciones del repositorio de GitHub público o utilizar su administrador de paquetes favorito. OpenSSL se instala también en imágenes Linux de Elastic Beanstalk, por lo que es una buena alternativa para conectarse a una instancia EC2 en un entorno en ejecución a través del comando eb ssh de la CLI de EB:

~/eb$ eb ssh [ec2-user@ip-255-55-55-255 ~]$ openssl version OpenSSL 1.0.1k-fips 8 Jan 2015

Necesita crear una clave privada RSA para crear la solicitud de firma del certificado (CSR). Para crear su clave privada, utilice el comando openssl genrsa:

[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem Generating RSA private key, 2048 bit long modulus .................................................................................................................................+++ ...............+++ e is 65537 (0x10001)
privatekey.pem

El nombre del archivo en el que desea guardar la clave privada. Normalmente, el comando openssl genrsa muestra el contenido de la clave privada en la pantalla, pero este comando envía el resultado a un archivo. Elija un nombre de archivo y almacene el archivo en un lugar seguro para que pueda recuperarlo más adelante. Si pierde su clave privada, no podrá utilizar su certificado.

Una CSR es un archivo que se envía a una entidad de certificación (CA) para solicitar un certificado digital de servidor. Para crear un CSR, utilice el comando openssl req:

$ openssl req -new -key privatekey.pem -out csr.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.

Introduzca la información solicitada y pulse Intro. En la siguiente tabla se describen y muestran ejemplos para cada campo.

Nombre Descripción Ejemplo
Country Name La abreviatura ISO de dos letras del país. US = Estados Unidos
State or Province Nombre del país o de la región donde se ubica su organización. Este nombre no se puede abreviar. Washington
Locality Name Nombre de la ciudad donde se ubica su organización. Seattle
Organization Name Nombre legal completo de su organización. No abrevie el nombre de la organización. Empresa de ejemplo
Organizational Unit Información adicional sobre la organización (opcional). Marketing
Common Name Nombre completo del dominio de su sitio web. Debe coincidir con el nombre de dominio que los usuarios ven cuando visitan su sitio; de lo contrario, se mostrarán los errores del certificado. www.ejemplo.com
Email address Dirección de correo electrónico del administrador del sitio. alguien@ejemplo.com

Puede enviar la solicitud de firma a un tercero para que la firme o firmarla usted mismo para las tareas de desarrollo y pruebas. Los certificados autofirmados se pueden utilizar también para la conexión HTTPS del back-end entre un balanceador de carga e instancias EC2.

Para firmar el certificado, use el comando openssl x509. El siguiente ejemplo utiliza la clave privada del paso anterior (privatekey.pem) y la solicitud de firma (csr.pem) para crear un certificado público denominado public.crt válido durante 365 días.

$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt Signature ok subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/CN=www.example.com/emailAddress=someone@example.com Getting Private key

Mantenga la clave privada y el certificado público para usarlos más adelante. Puede desechar la solicitud de firma. Almacene siempre la clave privada en un lugar seguro y evite añadirla a su código fuente.

Para utilizar el certificado con la plataforma Windows Server, debe convertirlo a un formato PFX. Utilice el siguiente comando para crear un certificado PFX a partir de los archivos de clave privada y certificado público:

$ openssl pkcs12 -export -out example.com.pfx -inkey privatekey.pem -in public.crt Enter Export Password: password Verifying - Enter Export Password: password

Ahora que ya tiene un certificado, puede cargarlo en IAM para su uso con un balanceador de carga o configurar las instancias de su entorno para terminar HTTPS.