Generar certificados SSL puede ser una tarea desafiante, llena de frustración y pesar. ¡Pero no tiene que ser así! Si tienes Windows 10 y OpenSSL, junto con un poco de ayuda de este tutorial, estarás bien encaminado.
En este artículo, aprenderás cómo instalar OpenSSL en Windows 10. Una vez instalado, luego generarás certificados SSL, solucionarás problemas y depurarás certificados, y convertirás entre formatos.
¡Comencemos a dominar OpenSSL en Windows 10 con PowerShell!
Relacionado: Gestión de Certificados con el Administrador de Certificados de Windows y PowerShell
Prerrequisitos
En este artículo, aprenderás usando un enfoque práctico. Si bien OpenSSL históricamente es una utilidad de sistema operativo Linux, también puedes usarlo con Windows.
- A Windows system with Local Administrator rights – The tutorial will be using Windows 10
- Windows PowerShell 5.1 (viene con Windows) o PowerShell 7
- Chocolatey: un gestor de paquetes para Windows instalado.
- PowerShell ISE, Visual Studio Code o cualquier editor de texto de tu elección
Todas las capturas de pantalla en esta guía fueron tomadas de Windows 10 versión 1909 y PowerShell 7.
Instalando OpenSSL en Windows 10 con PowerShell y Chocolatey
Suponiendo que has instalado Chocolatey utilizando las instrucciones de instalación, tu primera tarea es instalar OpenSSL en Windows 10. Para hacer esto, abre tu consola de PowerShell y ejecuta choco install OpenSSL.Light
como se muestra a continuación.

¡Eso es todo! Ahora has instalado OpenSSL con PowerShell.
Configura un Directorio de Trabajo
Este tutorial creará algunos certificados para aprender. Para asegurarte de que todo el trabajo que hagas aquí esté contenido en una carpeta que puedas limpiar más tarde, adelante y crea una.
Este tutorial almacenará todos los certificados y archivos relacionados en la carpeta C:\certs. Puedes crear una carpeta con PowerShell ejecutando el siguiente comando.
Ahora es el momento de configurar OpenSSL.
Configurando OpenSSL
Por defecto, OpenSSL en Windows 10 no viene con un archivo de configuración. Esto es intencional porque hay muchas opciones de configuración que puedes personalizar. Para los propósitos de esta guía, vas a usar una configuración de ejemplo que puedes personalizar más tarde para adaptarla mejor a tus requerimientos de seguridad.
Abre PowerShell y ejecuta el siguiente comando. Este comando descarga un archivo de configuración de ejemplo desde MIT y lo guarda como openssl.cnf en el directorio de trabajo actual.
Ahora puedes abrir el archivo openssl.cnf y deberías ver algo que se ve como a continuación.

El archivo de configuración descargado funcionará tal como está por ahora. No utilices los valores predeterminados en un entorno de producción.
Actualizar Variables de Entorno del Perfil de PowerShell
Para que todo funcione sin problemas, deberías modificar tu perfil de PowerShell en Windows 10. Configurar algunas variables de entorno te permitirá cambiar fácilmente entre diferentes versiones de OpenSSL que puedas tener instaladas.
I suggest adding two environment variables to your PowerShell profile called path
and OPENSSL_CONF
. You will update the PATH
environment variable to ensure you can run the openssl binary in any location while on the command line.
A continuación, verás una manera de crear un perfil de PowerShell si aún no tienes uno. Este comando añade la ruta binaria de OpenSSL a tu variable PATH
y asigna la ruta del archivo de configuración a OPENSSL_CONF
.
Para utilizar las variables de entorno, recarga tu perfil escribiendo . $profile
o simplemente cierra y vuelve a abrir PowerShell.
Ahora puedes invocar fácilmente el binario openssl desde cualquier lugar en PowerShell, como se muestra a continuación.

Usando OpenSSL en Windows 10 para generar un CSR y una clave privada
Antes de poder crear un certificado SSL, debes generar una solicitud de firma de certificado (CSR) . Un CSR es un archivo codificado que te proporciona una forma de compartir tu clave pública con una autoridad de certificación (CA). Este archivo contiene información de identificación, un algoritmo de firma y una firma digital. Vamos a crear tu primer CSR y clave privada.
Relacionado: Tu Guía para Certificados X509 para Mortales
Para crear un CSR, ejecuta el siguiente comando. OpenSSL te pedirá que ingreses información de identificación, como se muestra en la siguiente demostración.

Una vez completado, tendrás un CSR válido y una clave privada que se puede utilizar para emitir un certificado SSL a tu nombre.
La configuración predeterminada del archivo se puede editar aún más para agilizar este proceso si no deseas ingresar datos cada vez que generas un CSR.
Puedes obtener más información sobre las opciones disponibles para CSR y ver configuraciones de muestra en las páginas del manual. OpenSSL también tiene un repositorio activo en GitHub con ejemplos.
Generación de Pares de Claves RSA
También puedes crear pares de claves RSA (pública/privada) con OpenSSL. Para hacerlo, primero crea una clave privada utilizando el subcomando genrsa
como se muestra a continuación.
Cuando ejecutas el comando a continuación, OpenSSL en Windows 10 generará una clave privada RSA con una longitud de clave de 2048 bits. Esta clave se genera casi inmediatamente en hardware moderno. La clave resultante se muestra en el directorio de trabajo
A continuación, genera una clave pública usando la clave privada que acabas de crear con el subcomando rsa
. La sintaxis a continuación creará una clave pública llamada rsa.public en el directorio de trabajo a partir de la clave privada rsa.private.
Generando un Certificado Autofirmado
En ocasiones, es posible que necesites generar un certificado autofirmado. Los certificados autofirmados son adecuados para su uso en entornos de laboratorio, pero no es una práctica segura utilizarlos en un entorno de producción.
Vamos a crear un certificado autofirmado antes de pasar a la siguiente tarea. Para hacerlo, introduce el siguiente comando para crear un certificado SSL X509. Este certificado utilizará criptografía SHA256 y será válido por 365 días utilizando una longitud de clave RSA de 2048 bits. El certificado se guardará en el directorio de trabajo.
Ahora estás listo para importar el certificado en un navegador o servidor.
Validación de CSRs, Certificados y Claves con OpenSSL
Revisar la información en un CSR, clave privada, certificado o PKCS#12 puede ahorrarte tiempo al solucionar errores SSL. A veces, se puede haber utilizado una clave incorrecta para crear un certificado, por ejemplo. Es posible que la información de identificación incorrecta esté en el certificado.
Comencemos revisando un CSR usando el comando req
y algunos parámetros:

Detalles como el nombre del país, el nombre de la organización y la dirección de correo electrónico que ingresaste al crear el CSR al principio de esta guía deben coincidir exactamente.
También puedes verificar un certificado usando el subcomando x509
con algunos parámetros:

Conversión de Certificados con OpenSSL
En ocasiones, una aplicación no utiliza un formato de certificado específico. Puedes encontrarte con este problema en una aplicación llamada HAproxy, por ejemplo, que requiere un certificado PEM cuando puedes tener un certificado formateado en DER (.crt .cer .der).
Para demostrar cómo convertir un certificado, convirtamos el certificado autofirmado creado anteriormente en formato DER (certificate.crt) a PEM. Utiliza el código en el siguiente fragmento de código para hacerlo.
Este comando a continuación utiliza el subcomando x509
con el parámetro -inform
, que debería coincidir con el formato del archivo -in
, seguido del formato -out
.
También puedes invertir el orden si deseas convertir de PEM a formato DER, como se muestra a continuación.
Y por último, pero no menos importante, puedes convertir PKCS#12 a PEM y PEM a PKCS#12. Este es un tipo de archivo que contiene claves privadas y certificados. Para convertirlo al formato PEM, utiliza el subcomando pkcs12
.
También puedes convertir un certificado PEM y una clave privada al formato PKCS#12 utilizando -export
con algunas opciones adicionales. A continuación, se muestra cómo exportar un certificado con formato PKCS#12 utilizando tu clave privada mediante SomeCertificate.crt
como fuente de entrada. El uso de la opción -certfile
con el valor MyCACert.crt
te permite validar SomeCertificate.crt
.
Resolución de problemas y depuración
Ahora que puedes crear y convertir CSR, certificados y pares de claves, es el momento de aprender a solucionar problemas y depurarlos. OpenSSL cuenta con comandos que facilitan la tarea de solucionar problemas.
OpenSSL también te permite verificar certificados para la integridad del archivo y probar posibles corrupciones de datos. Utilizando un checksum MD5, puedes usar los siguientes ejemplos de código para probar certificados, claves y CSR:
Una vez que tengas el hash original, puedes compararlo con un hash actual para verificar que el certificado no se haya modificado ni corrompido.
Aquí tienes una muestra de cómo se ve ese código cuando se ejecuta en PowerShell:

Resumen
En este artículo, has aprendido cómo instalar y configurar OpenSSL en Windows 10, crear una CSR, un par de claves y un certificado SSL. También has aprendido cómo convertir entre diferentes formatos de certificados y realizar algunas soluciones básicas utilizando subcomandos integrados.