~/docs /OpenSSL y Certificados

OpenSSL y Certificados

OpenSSL y Certificados

Imported from Notion: OpenSSL y Certificados

updated:: 2026.07.10

Que resuelve

Referencia practica para inspeccionar certificados TLS, claves, CSR, cadenas de confianza y problemas habituales con openssl.

Ver certificados remotos

Mostrar certificado del servidor

openssl s_client -connect {HOST}:443 -servername {HOST}

Ver cadena completa

openssl s_client -connect {HOST}:443 -servername {HOST} -showcerts

Extraer certificado remoto

openssl s_client -connect {HOST}:443 -servername {HOST} </dev/null 2>/dev/null | openssl x509 -noout -text

Ver fechas

openssl s_client -connect {HOST}:443 -servername {HOST} </dev/null 2>/dev/null | openssl x509 -noout -dates

Ver subject e issuer

openssl s_client -connect {HOST}:443 -servername {HOST} </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer

Inspeccionar archivos locales

Certificado PEM

openssl x509 -in {CERT}.pem -noout -text

Fechas de certificado

openssl x509 -in {CERT}.pem -noout -dates

Fingerprint SHA256

openssl x509 -in {CERT}.pem -noout -fingerprint -sha256

CSR

openssl req -in {CSR}.csr -noout -text

Clave privada RSA

openssl rsa -in {KEY}.key -check -noout

Clave privada generica

openssl pkey -in {KEY}.key -check -noout

Crear claves y CSR

Generar clave privada RSA

openssl genrsa -out {KEY}.key 4096

Generar clave privada Ed25519

openssl genpkey -algorithm ED25519 -out {KEY}.key

Crear CSR

openssl req -new -key {KEY}.key -out {CSR}.csr

Crear certificado autofirmado de laboratorio

openssl req -x509 -newkey rsa:4096 -keyout {KEY}.key -out {CERT}.crt -days 365 -nodes
warning

Un certificado autofirmado sirve para laboratorio o entornos internos controlados. Para servicios publicos usa una CA confiable.

Validar pareja certificado-clave

Modulus de certificado

openssl x509 -noout -modulus -in {CERT}.crt | openssl md5

Modulus de clave RSA

openssl rsa -noout -modulus -in {KEY}.key | openssl md5

Los hashes deben coincidir si el certificado y la clave forman pareja.

Convertir formatos

DER a PEM

openssl x509 -inform der -in {CERT}.der -out {CERT}.pem

PEM a DER

openssl x509 -outform der -in {CERT}.pem -out {CERT}.der

PFX/P12 a PEM

openssl pkcs12 -in {CERT}.p12 -out {CERT}.pem -nodes

PEM a PFX/P12

openssl pkcs12 -export -out {CERT}.p12 -inkey {KEY}.key -in {CERT}.crt -certfile {CHAIN}.crt

Verificar cadena

Verificar contra CA

openssl verify -CAfile {CA}.crt {CERT}.crt

Verificar con cadena intermedia

openssl verify -CAfile {CA}.crt -untrusted {CHAIN}.crt {CERT}.crt

TLS debug

Probar version TLS minima

openssl s_client -connect {HOST}:443 -servername {HOST} -tls1_2

Probar TLS 1.3

openssl s_client -connect {HOST}:443 -servername {HOST} -tls1_3

Ver cipher negociado

openssl s_client -connect {HOST}:443 -servername {HOST} </dev/null 2>/dev/null | grep -i 'Cipher'

Recetas

Comprobar caducidad rapidamente

echo | openssl s_client -connect {HOST}:443 -servername {HOST} 2>/dev/null | openssl x509 -noout -enddate

Comprobar SANs

openssl x509 -in {CERT}.crt -noout -text | grep -A1 'Subject Alternative Name'

Generar hash de archivo

openssl dgst -sha256 {FILE}

Generar random seguro en base64

openssl rand -base64 32

Variables

VariableDescripcion
{HOST}Dominio del servicio TLS
{CERT}Nombre base del certificado
{KEY}Nombre base de la clave privada
{CSR}Nombre base del CSR
{CHAIN}Cadena intermedia
{CA}Certificado de CA
{FILE}Archivo

Errores comunes

SintomaCausa probableSolucion
unable to get local issuer certificateFalta intermediaInstala cadena completa
Certificado valido pero navegador fallaSAN incorrectoRevisa Subject Alternative Name
Clave no coincideCertificado equivocadoCompara modulus/hash
Sin SNI muestra otro certificadoFalta -servernameIncluye SNI en s_client

Checklist final

  • Usa siempre -servername al probar HTTPS.

  • Revisa notBefore y notAfter.

  • Comprueba SAN, issuer y cadena.

  • Protege las claves privadas con permisos restrictivos.

- EOF -