En este artículo te mostraré una lista de comandos OpenSSL que debes saber, los cuales te serán de gran ayuda.
Introducción
OpenSSL es una librería de software Open Source ampliamente utilizada que implementa los protocolos Secure Sockets Layer (SSL) y Transport Layer Security (TLS). Proporciona funcionalidad criptográfica para diversas aplicaciones. Se usa para crear y administrar certificados y claves privadas. También, para cifrar y descifrar datos y proteger las conexiones de red.
OpenSSL es ampliamente compatible con varios sistemas operativos, lenguajes de programación y aplicaciones. Esto lo convierte en una opción popular para comunicaciones seguras y protección de datos.
Como las comunicaciones encriptadas son el estándar hoy en día, aquí hay 5 comandos OpenSSL que debes saber:
1. Crear llaves privadas RSA
Una llave privada es el primer requisito para crear certificados, así que aquí está el comando para crear una llave:
$ openssl genrsa -aes256 -out CA-key.pem 4096
El ejemplo muestra cómo se crea una llave de 4096 bits, protegida usando el cifrado AES256. Para más información, consultar openssl-genrsa(1)
Dado que usamos el nombre de archivo «CA-key.pem», podemos inferir que esta llave se usará para una CA (Certification Authority). Sin embargo, el mismo comando puede usarse para crear llaves que no sean para certificados de tipo CA.
2. Crear un Certificado Raíz (CA)
openssl req -new -x509 -key CA-key.pem -days 3650 -out CA-cert.pem \ -subj /C=US/ST=Utah/L=Lehi/O=Company/CN=www.mydomain.net
Aquí usamos varios argumentos para crear un certificado «CA-cert.pem» con una validez de 10 años. Usa una llave privada «CA-key.pem» creada previamente. También, este es un comando no-interactivo que configura en línea la información del certificado, tal como el país, estado, ciudad, organización y nombre común.
3. Crear una Solicitud de Certificado (Certificate Signing Request – CSR)
Aquí tenemos dos opciones:
1. Primero, crear una llave privada. Luego, generar la solicitud CSR usando la llave recién creada.
$ HOST="www.mydomain.net"
$ openssl genrsa -out "${HOST}-key.pem" 2048
$ openssl req -new -key "${HOST}-key.pem" -out "${HOST}-req.pem" \
-subj /CN=$HOST
2. Crear la llave privada y la solicitud CSR en un solo paso:
$ HOST="www.mydomain.net"
$ openssl req -new -newkey rsa:2048 -nodes -keyout "${HOST}-key.pem" \
-out "${HOST}-req.pem" -subj /CN=$HOST
Estos ejemplos mostrados arriba crean una llave de 2048 bits, desprotegida (sin contraseña) y usando el nombre común www.mydomain.net para la solicitud CSR.
4. Crear solicitudes (CSRs) con nombres alternos (SANs)
El uso de SANs (Subject Alternative Names) es hoy un estándar que muchos sitios Web y aplicaciones esperan que otros cumplan. Esto reemplaza el antiguo campo «Nombre Común» (Common Name).
Primero, debemos crear un archivo de configuración OpenSSL como sigue:
# openssl.cnf ubicado en nuestro directorio actual
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[req_distinguished_name]
countryName = US
stateOrProvinceName = Utah
localityName = Lehi
organizationName = My Company
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.mydomain.net
DNS.2 = mydomain.net
DNS.3 = api.mydomain.net
Ahora, creamos la solicitud CSR como sigue:
$ HOST="www.mydomain.net"
$ openssl req -new -newkey rsa:2048 -nodes -keyout "${HOST}-key.pem" \
-out "${HOST}-req.pem" -subj /CN=$HOST -config openssl.cnf
5. Mostrar información del certificado de un sitio remoto
Podemos realizar esto en línea como sigue:
$ HOST="www.angelrengifo.com"
$ openssl s_client -servername "$HOST" -connect "$HOST":443 < /dev/null \
2> /dev/null | openssl x509 -noout -issuer -subject -dates
El primer comando (antes del símbolo de tubería) conecta a un sitio remoto y lee la información sobre el certificado SSL/TLS. Luego, a través de una tubería, conecta la información obtenida con un segundo comando openssl que extrae solo los campos exactos que son de nuestro interés. Por ejemplo, la entidad emisora (issuer), el asunto (subject), fechas de creación y expiración.
Para terminar…
OpenSSL es una herramienta genial y es súper completa. Soporta decenas de subcomandos y funciones para diversos usos adicionales. Algunas de esas son la firma de certificados, cifrado y descifrado de datos, gestión de listas de revocación, y un largo etcétera.
Sin embargo, este artículo intentó enfocarse solo en algunas de las tareas más comunes que alguien puede requerir en el trabajo. Estas como son la creación de llaves y solicitudes para crear certificados digitales comerciales (Ejm: DigiCert, Verisign, etc.). También, la consulta de certificados de sitios en línea para fines de validación.
Por eso considero que estos fueron los 5 comandos OpenSSL que debes saber. Espero que este post haya sido de ayuda para el lector.
Deja un comentario