Una tarea común que tenemos que realizar es mover certificados entre entornos de plataformas mixtas, es decir, de Windows a Linux, o de Windows a Amazon Web Services (AWS). Por ejemplo, puedes tener un certificado y una clave privada instalados en una máquina de Windows Server y utilizados por IIS, pero ¿cómo exportarlos para poder utilizarlos en Apache o NGINX que se ejecutan en un servidor Linux? ¿O qué pasa con la importación del certificado para que pueda utilizarlo para asegurar un punto final HTTPs en AWS Application Load Balancer? En este post, mostraremos muy rápidamente cómo exportar y transformar un certificado utilizado en Windows para que pueda ser utilizado en entornos no Windows.
Requisitos previos
- Una máquina Windows Server con un certificado y un par de claves privadas instalados. La clave privada debe haber sido importada y marcada como Exportable, de lo contrario este tutorial no funcionará.
- Módulo OpenSSL instalado para PowerShell
Exportar el certificado desde Windows
1.) Abre el administrador de certificados de la máquina local (ejecuta «certmgr» desde el cuadro de búsqueda de Windows)
2.) Busca tu certificado instalado dentro de uno de sus almacenes de certificados locales, haz clic con el botón derecho del ratón sobre él, ve a Todas las tareas -> Exportar.
3.) Esto lanza el «Asistente de Exportación de Certificados». Dentro de éste, haz clic en Siguiente y asegúrate de marcar la opción «Sí, exportar la clave privada».
4.) Para el Formato de archivo de exportación, asegúrate de marcar «Intercambio de información personal – PKCS #12» y acepta los valores marcados por defecto debajo de él.
5.) Establece una contraseña que se utilizará para proteger el archivo PFX exportado, anótela para más adelante.
6.) Elige una ubicación y un nombre para el archivo, y pulse «Finalizar».
En este punto ya tienes un archivo .PFX exportado que contiene las claves públicas y privadas del certificado que queremos convertir.
Convertir el formato de archivo PFX a formato PEM
1.) Abre una ventana de comandos PowerShell.
2.) El primer paso es exportar la clave privada del archivo PFX, para ello escribe
openssl pkcs12 -in <archivo>.pfx -nocerts -out key.pem
Esto te pedirá que introduzcas la contraseña que estableció en el archivo PFX en el paso 5 de la sección anterior. También se te pedirá que proporciones una nueva contraseña para el archivo key.pem generado, simplemente elige cualquier contraseña por ahora, vamos a eliminarla al final del tutorial.
3.) A continuación, exportaremos el certificado del propio archivo pfx y lo pondremos en tu propio archivo .PEM:
4.) Por último, tomaremos la salida del paso 2 y eliminaremos la frase de contraseña de la misma:
openssl rds -in key.pem -out server.key
Y ya está. El archivo cert.pem contiene la clave pública de tu certificado. El archivo server.key contiene la clave privada asociada a ese certificado.
Copiar archivos PEM y KEY en Linux
1.) Copia los archivos cert.pem y server.key a tu instancia Linux.
2.) Asegúrate de que se han establecido los permisos correctos en ambos archivos:
- Establece el permiso de directorio en 700.
- Establece el permiso de los archivos .pem y .key en 600.
- Asegúrate de que el directorio y los propios archivos son propiedad del usuario root.
3.) Modifica las configuraciones de Apache o NGINX para que hagan referencia a los archivos copiados anteriormente.
Importar los certificados en Amazon Certificate Manager
Si deseas utilizar el certificado dentro de AWS como un certificado SSL en un balanceador de carga de aplicaciones, tendrás que importar primero los certificados en Amazon Certificate Manager.
1.) Inicia sesión en el Administrador de certificados de Amazon
2.) Haz clic en Importar certificado
3.) En la casilla denominada «Certificate Body», pega el contenido del archivo cert.pem.
4.) En la casilla denominada «Certificate Private Key», pegua el contenido del archivo server.key.
5.) Si hay una autoridad de certificación intermedia utilizada por tu certificado, copia y pega la clave pública de cualquier certificado intermedio en la casilla «Cadena de certificados».
6.) Modifica los puntos finales de escucha del Application Load Balancer para que utilicen el certificado que importó en el paso 5.