AdSense Placeholder
Slot: header_reference_page
OpenSSL es un conjunto de herramientas de línea de comandos para hashes, cifrado, claves y certificados. Todos los comandos de abajo se ejecutaron con OpenSSL 3.5. Para ver un certificado sin usar la terminal, utilice Decodificador de Certificados o Verificador de Certificado SSL; para calcular resúmenes en el navegador, Generador de Hash.
Hashes, datos aleatorios y cifrado
| Tarea |
Comando |
| Mostrar la versión |
openssl version |
| SHA-256 de un archivo |
openssl dgst -sha256 archivo.txt |
| Resumen SHA-384 en Base64 (para SRI) |
openssl dgst -sha384 -binary archivo.js | openssl base64 -A |
| 32 bytes aleatorios en hexadecimal |
openssl rand -hex 32 |
| 24 bytes aleatorios en Base64 |
openssl rand -base64 24 |
| Cifrar un archivo con una frase de contraseña |
openssl enc -aes-256-cbc -pbkdf2 -salt -in f.txt -out f.enc |
| Descifrarlo de nuevo |
openssl enc -d -aes-256-cbc -pbkdf2 -in f.enc -out f.txt |
Generar un hash de contraseña para /etc/shadow (crypt SHA-512) |
openssl passwd -6 -salt abcdefgh secreto |
Claves y solicitudes de certificado
| Tarea |
Comando |
| Clave privada RSA de 2048 bits |
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out key.pem |
| Clave de curva elíptica (P-256) |
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec.pem |
| Extraer la clave pública |
openssl pkey -in key.pem -pubout -out pub.pem |
| Describir una clave |
openssl pkey -in ec.pem -noout -text |
| Listar las curvas disponibles |
openssl ecparam -list_curves |
| Solicitud de firma de certificado (CSR) |
openssl req -new -key key.pem -subj "/CN=example.com" -out req.csr |
| Leer una CSR |
openssl req -in req.csr -noout -subject |
| Certificado autofirmado por 365 días, con SAN |
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:www.example.com" |
Leer y convertir certificados
| Tarea |
Comando |
| Sujeto, emisor y fechas de validez |
openssl x509 -in cert.pem -noout -subject -issuer -dates |
| Huella SHA-256 |
openssl x509 -in cert.pem -noout -fingerprint -sha256 |
| Nombres alternativos del sujeto (SAN) |
openssl x509 -in cert.pem -noout -ext subjectAltName |
| Todo, decodificado |
openssl x509 -in cert.pem -noout -text |
| De PEM a DER |
openssl x509 -in cert.pem -outform der -out cert.der |
| De DER a PEM |
openssl x509 -inform der -in cert.der -out cert.pem |
| Comprobar un certificado con un archivo de CA |
openssl verify -CAfile ca.pem cert.pem |
| ¿La clave corresponde al certificado? (compare los dos hashes) |
openssl x509 -in cert.pem -noout -pubkey | openssl sha256 y openssl pkey -in key.pem -pubout | openssl sha256 |
| Empaquetar clave y certificado como PKCS#12 |
openssl pkcs12 -export -in cert.pem -inkey key.pem -out bundle.p12 |
| Inspeccionar un paquete PKCS#12 |
openssl pkcs12 -info -in bundle.p12 -noout |
| Obtener y leer el certificado que presenta un servidor |
openssl s_client -connect example.com:443 -servername example.com </dev/null | openssl x509 -noout -subject -dates |
| Probar una versión concreta de TLS |
openssl s_client -connect example.com:443 -tls1_3 |
Conviene saber
-pbkdf2 hace que enc derive la clave con PBKDF2 en lugar del método antiguo y débil; inclúyalo siempre.
-nodes («no DES») deja la clave privada sin cifrar en el disco. Úselo solo con claves de prueba o desechables.
- Pasar una frase de contraseña en la línea de comandos (
-pass pass:...) la expone en la lista de procesos. Es mejor -pass stdin o un archivo.
- La opción
-servername fija el SNI. Sin ella, un servidor que aloja varios sitios puede presentar el certificado equivocado.
- Un resumen que pasa por
openssl base64 -A es lo que produce un generador de hash SRI para el atributo integrity.