Pide tu presupuesto ya!

Una guía para una seguridad potente

Generar certificados SSL puede ser una tarea desalentadora, llena de frustración y tristeza. ¡Pero no tiene por qué ser así! Si tiene Windows 10 y OpenSSL junto con un poco de ayuda de este tutorial, estará en el camino correcto.

¿No eres lector? ¡Mira este video tutorial relacionado! ¿No ves el vídeo? Asegúrese de que su bloqueador de anuncios esté desactivado.

En este artículo, aprenderá cómo instalar OpenSSL en Windows 10. Una vez instalado, generará certificados SSL, solucionará problemas y depurará certificados, y realizará conversiones entre formatos.

¡Comencemos a dominar OpenSSL en Windows 10 con PowerShell!

Relacionado: Administrar certificados con el Administrador de certificados de Windows y PowerShell

Requisitos previos

En este artículo, aprenderá utilizando un enfoque práctico. Mientras AbiertoSSL Históricamente es una utilidad del sistema operativo Linux, también puedes usarla con el sistema operativo Windows.

Todas las capturas de pantalla de esta guía se tomaron de Windows 10 build 1909 y PowerShell 7.

Instalación de OpenSSL en Windows 10 con PowerShell y Chocolatey

Suponiendo que haya instalado chocolateado utilizando el Instrucciones de instalaciónsu primera tarea es instalar OpenSSL en Windows 10. Para hacer esto, abra su consola PowerShell y ejecute choco install OpenSSL.LightComo se muestra abajo.

Instalación de OpenSSL.Light usando <a clase=
Instalación de OpenSSL.Light usando el administrador de paquetes Chocolatey en PowerShell

¡Eso es todo! Ahora ha instalado OpenSSL con PowerShell.

Configurar un directorio de trabajo

Este tutorial creará algunos certificados para aprender. Para asegurarse de que todo el trabajo que realiza aquí esté confinado a una sola carpeta que pueda limpiar más tarde, continúe y cree una.

Este tutorial almacenará todos los certificados y archivos relacionados en el C:\certificados carpeta. Puede crear una carpeta con PowerShell ejecutando el siguiente comando.

New-Item -ItemType Directory -Path C:\certs

Ahora es el momento de configurar OpenSSL.

Configurar OpenSSL

De forma predeterminada, 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 fines de esta guía, utilizará una configuración de muestra que podrá personalizar más adelante para adaptarla mejor a sus requisitos de seguridad.

Abra PowerShell y ejecute el siguiente comando. Este comando descarga un archivo de configuración de muestra del MIT y lo guarda como openssl.cnf en el directorio de trabajo actual.

Ahora puedes abrir el openssl.cnf archivo y debería ver algo parecido a lo siguiente.

Archivo de configuración de OpenSSL de ejemplo en Visual Studio Code
Archivo de configuración OpenSSL de muestra

La configuración descargada funcionará tal cual por ahora. ¡No utilice los valores predeterminados en un entorno de producción!

Actualizar las variables de entorno del perfil de PowerShell

Para que todo vaya bien, debes modificar tu Perfil de PowerShell en Windows 10. La configuración de algunas variables de entorno le permite cambiar fácilmente entre diferentes versiones de OpenSSL que pueda tener instaladas.

Sugiero agregar dos variables de entorno a su perfil de PowerShell llamadas path y OPENSSL_CONF. Actualizarás el PATH variable de entorno para garantizar que pueda ejecutar el abresl binario en cualquier ubicación mientras esté en la línea de comando.

A continuación verá una forma de crear un perfil de PowerShell si aún no tiene uno. Este comando agrega la ruta binaria OpenSSL a su PATH y asigne la ruta del archivo de configuración a OPENSSL_CONF.

# Add environment variables to PowerShell profile
# Test for a profile, if not found create one!
if (-not (Test-Path $profile) ) {
    New-Item -Path $profile -ItemType File -Force
}

# Edit profile to add these lines
'$env:path = "$env:path;C:\Program Files\OpenSSL\bin"' | Out-File $profile -Append
'$env:OPENSSL_CONF = "C:\certs\openssl.cnf"' | Out-File $profile -Append

Para usar las variables de entorno, recarga tu perfil escribiendo . $profile o simplemente cierre y vuelva a abrir PowerShell.

Ahora puedes invocar fácilmente el abresl binario dondequiera que esté en PowerShell como se muestra a continuación.

Verificando la versión de OpenSSL en PowerShell
Verificando la versión de OpenSSL en PowerShell

Uso de OpenSSL en Windows 10 para generar una CSR y una clave privada

Antes de poder crear un certificado SSL, debe generar una solicitud de firma de certificado (CSR). Una CSR es un archivo codificado que le proporciona una manera de compartir su clave pública con una autoridad certificadora (CA). Este archivo contiene información de identificación, un algoritmo de firma y una firma digital. Creemos su primera CSR y clave privada.

Relacionado: Su guía de certificados X509 para mortales

Para crear una CSR, ejecute el siguiente comando. OpenSSL luego le pedirá que ingrese cierta información de identificación, como puede ver en la siguiente demostración.

openssl req -new -out MyFirst.csr
Generando una CSR y una clave privada usando OpenSSL en PowerShell
Generando una CSR y una clave privada usando OpenSSL en PowerShell

Una vez completado, tendrá una CSR válida y una clave privada que podrá utilizar para emitirle un certificado SSL.

Los valores predeterminados del archivo de configuración se pueden editar aún más para agilizar este proceso en caso de que no desee ingresar datos cada vez que genere una CSR.

Puede leer más sobre las opciones de CSR disponibles y ver configuraciones de muestra en las páginas de manual. OpenSSL también tiene un activo repositorio de GitHub con ejemplos también.

Generando pares de claves RSA

También puede crear pares de claves RSA (públicas/privadas) con OpenSSL. Para hacerlo, primero, cree una clave privada usando el genrsa subcomando como se muestra a continuación.

Cuando ejecuta el siguiente comando, OpenSSL en Windows 10 generará una clave privada RSA con una longitud de clave de 2048 bits. Esta clave se genera casi de inmediato en hardware moderno. La clave resultante se muestra en el directorio de trabajo.

# generate a private key using maximum key size of 2048
# key sizes can be 512, 758, 1024, 1536 or 2048. 
openssl genrsa -out rsa.private 2048

A continuación, genere una clave pública usando la clave privada que acaba de crear usando el rsa subcomando. La siguiente sintaxis creará una clave pública llamada rsa.publico en el directorio de trabajo desde el rsa.privado llave privada.

# generate a public key using the private key
openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM

Generar un certificado autofirmado

En ocasiones puede que necesites generar un certificado autofirmado. Los certificados autofirmados están bien para uso en laboratorio, pero no son una práctica segura para usar en un entorno de producción.

Creemos un certificado autofirmado antes de pasar a la siguiente tarea. Para hacerlo, ingrese el siguiente comando para crear un certificado SSL X509. Este certificado utilizará criptografía SHA256 que será válida durante 365 días utilizando una longitud de clave RSA de 2048 bits. El certificado se guardará en el directorio de trabajo.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

Ahora está listo para importar el certificado a un navegador o servidor.

Validación de CSR, certificados y claves con OpenSSL

Verificar la información en una CSR, clave privada, certificado o PKCS#12 puede ahorrarle tiempo al solucionar errores de SSL. En ocasiones, es posible que se haya utilizado una clave incorrecta para crear un certificado, por ejemplo. Es posible que tenga información de identificación incorrecta en el certificado.

Comencemos verificando un CSR usando el req comando y algunos parámetros:

openssl req -text -noout -verify -in .\MyFirst.csr
Comprobación de una CSR con OpenSSL en PowerShell
Comprobación de una CSR con OpenSSL en PowerShell

Detalles como el nombre del país, el nombre de la organización y la dirección de correo electrónico que ingresó al crear la CSR al comienzo de esta guía deben coincidir exactamente.

También puede consultar un certificado utilizando el x509 subcomando con un par de parámetros:

openssl x509 -in .\certificate.crt -text -noout | more
Comprobando un certificado con OpenSSL con el comando x509 en PowerShell
Comprobando un certificado con OpenSSL con el comando x509 en PowerShell

Conversión de certificados con OpenSSL

Hay ocasiones en las que una aplicación no utiliza un formato de certificado en particular. Puede encontrarse con este problema con una aplicación llamada haproxypor ejemplo, que requiere un certificado PEM cuando puede tener un certificado con formato DER (.crt .cer .der).

Para demostrar la conversión de un certificado, conviertamos el certificado autofirmado creado anteriormente en formato DER (certificado.crt) al PEM. Utilice el código del siguiente fragmento de código para hacerlo.

Este comando a continuación utiliza el x509 subcomando con el parámetro de -inform que debe coincidir con el formato del -in archivo seguido del -out formato.

openssl x509 -inform der -in .\certificate.crt -out .\certificate.pem

También puede invertir el orden si desea el formato DER desde PEM como se muestra a continuación.

openssl x509 -outform der -in .\certificate.pem -out .\certificate.der

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 convertir al formato PEM, utilice el pkcs12 subcomando.

openssl pkcs12 -in .\SomeKeyStore.pfx -out .\SomeKeyStore.pem -nodes

También puede convertir un certificado PEM y una clave privada al formato PKCS#12 utilizando -export con algunas opciones adicionales. A continuación, está exportando un certificado formateado PKCS#12 usando su clave privada usando SomeCertificate.crt como fuente de entrada. Utilizando el -certfile valor de la opción MyCACert.crt te permite validar SomeCertificate.crt.

openssl pkcs12 -export -out SomeCertificate.pfx -inkey SomePrivateKey.key -in SomeCertificate.crt -certfile MyCACert.crt

Solución de problemas y depuración

Ahora que puede crear y convertir CSR, certificados y pares de claves, es hora de aprender a solucionar problemas y depurarlos. OpenSSL viene con comandos que facilitan la resolución de problemas.

OpenSSL también le permite verificar la integridad de los archivos de los certificados y probar posibles daños en los datos. Usando un Suma de comprobación MD5puede utilizar los siguientes ejemplos de código para probar certificados, claves y CSR:

# Certificates
openssl x509 -noout -modulus -in .\certificate.crt | openssl md5

# Public / Private Keys
openssl rsa -noout -modulus -in .\privateKey.key | openssl md5

# Certificate Server Request
openssl req -noout -modulus -in .\MyFirst.csr | openssl md5

# Check an external SSL connection
openssl s_client -connect www.google.com:443

Una vez que tenga el hash original, puede comparar ese hash original con un hash actual para verificar que el certificado no haya sido modificado ni dañado.

Aquí hay un ejemplo de cómo se ve ese código cuando se ejecuta en PowerShell:

Ejemplo de resultado del comando de solución de problemas con OpenSSL en PowerShell
Ejemplo de resultado del comando de solución de problemas con OpenSSL en PowerShell

Resumen

En este artículo, ha aprendido cómo instalar y configurar OpenSSL en Windows 10, crear una CSR, un par de claves y un certificado SSL. También aprendió a convertir entre diferentes formatos de certificados y a solucionar algunos problemas básicos utilizando subcomandos integrados.

Recursos adicionales

Written by

Leave a comment