Comando openssl de Linux
Manual completo de comandos de Linux
OpenSSL es un potente kit de herramientas de cifrado de código abierto que proporciona diversos algoritmos de cifrado, funciones de gestión de certificados e implementación del protocolo SSL/TLS. Es la herramienta estándar de facto para manejar tareas de cifrado en sistemas Linux.
Las funciones principales de OpenSSL incluyen:
- Crear y gestionar certificados SSL
- Cifrar/descifrar archivos
- Generar pares de claves
- Probar conexiones SSL
- Calcular valores hash
- Verificación de firmas digitales
Sintaxis básica
El formato de sintaxis básica del comando openssl es:
openssl command [command_options] [command_args]
Donde:
command: El subcomando de OpenSSL a ejecutar (como genrsa, req, x509, etc.)command_options: Las opciones y parámetros del subcomandocommand_args: Los argumentos del subcomando
Subcomandos comunes y ejemplos
1. Generar par de claves RSA
Generar una clave privada RSA de 2048 bits:
openssl genrsa -out private.key 2048
Extraer la clave pública de la clave privada:
openssl rsa -in private.key -pubout -out public.key
Descripción de parámetros:
-out: Especifica el archivo de salida2048: Longitud de la clave (en bits)-pubout: Mostrar la clave pública
2. Crear certificado autofirmado
Generar CSR (solicitud de firma de certificado):
openssl req -new -key private.key -out cert.csr
Generar certificado autofirmado (validez de 365 días):
openssl req -x509 -new -key private.key -days 365 -out cert.crt
Descripción de parámetros:
-new: Crear nueva solicitud-key: Especificar el archivo de clave privada-days: Período de validez del certificado (en días)-x509: Generar certificado en formato X.509
3. Cifrado y descifrado de archivos
Cifrar archivo usando AES-256-CBC:
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc
Descifrar archivo:
openssl enc -d -aes-256-cbc -in encrypted.enc -out decrypted.txt
Descripción de parámetros:
-aes-256-cbc: Usar algoritmo AES-256-CBC-salt: Agregar sal aleatoria para mejorar la seguridad-in: Archivo de entrada-out: Archivo de salida-d: Modo de descifrado
4. Calcular valores hash de archivos
Calcular hash SHA-256:
openssl dgst -sha256 filename.txt
Calcular hash MD5:
openssl dgst -md5 filename.txt
5. Probar conexión SSL
Probar el certificado SSL de un servidor remoto:
openssl s_client -connect example.com:443 -showcerts
Descripción de parámetros:
-connect: Especificar host y puerto-showcerts: Mostrar la cadena de certificados del servidor
Uso avanzado
1. Crear certificado en formato PKCS#12
Empaquetar certificado y clave privada en un archivo PKCS#12:
openssl pkcs12 -export -in cert.crt -inkey private.key -out cert.p12
2. Ver información del certificado
Ver información detallada del certificado:
openssl x509 -in cert.crt -text -noout
3. Verificar cadena de certificados
Verificar la integridad de la cadena de certificados:
openssl verify -CAfile ca.crt cert.crt
Consideraciones de seguridad
- Protección de claves: El archivo de clave privada debe tener permisos adecuados (como 600) para evitar fugas
- Selección de algoritmos: Evitar el uso de algoritmos inseguros (como MD5, SHA1)
- Fortaleza de la contraseña: Usar contraseñas seguras al cifrar
- Período de validez del certificado: Renovar periódicamente los certificados caducados
- Generación de números aleatorios: Asegurar que el sistema tenga suficiente entropía para operaciones criptográficas
Preguntas frecuentes
P1: ¿Cómo verificar la versión de OpenSSL?
openssl version
P2: ¿Cómo generar una clave ECC más segura?
openssl ecparam -genkey -name secp384r1 -out ecc.key
P3: ¿Cómo convertir el formato de un certificado?
Convertir de PEM a DER:
openssl x509 -in cert.pem -outform der -out cert.der
Ejercicios prácticos
- Generar un par de claves RSA de 4096 bits
- Crear un certificado autofirmado con validez de 2 años
- Cifrar un archivo de texto y descifrarlo con la misma contraseña
- Verificar la información del certificado SSL de un sitio web que uses frecuentemente
Al dominar el comando openssl, podrás manejar diversas tareas relacionadas con cifrado y seguridad, sentando una base sólida para la seguridad del sistema y el trabajo de administración.
Otras extensiones