Todos los artículos de SSL SSL y certificados

Hoja de referencia de comandos OpenSSL para certificados SSL

OpenSSL es la navaja suiza para certificados SSL/TLS. Todos los demás artículos de este sitio hacen referencia a comandos OpenSSL; esta página los reúne todos en un solo lugar.

Verificar un certificado

Ver detalles del certificado (servidor remoto)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -text

Verificar fecha de vencimiento

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate

Verificar subject y SANs

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName

Verificar emisor (qué CA)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer

Verificar un archivo de certificado local

openssl x509 -in cert.pem -noout -text
openssl x509 -in cert.pem -noout -dates          # Just the dates
openssl x509 -in cert.pem -noout -subject         # Just the subject
openssl x509 -in cert.pem -noout -ext subjectAltName  # Just the SANs

Verificar la cadena de certificados

Verificar completitud de la cadena (remoto)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null
# Look for:
#   Verify return code: 0 (ok)          ← Chain is complete
#   Verify return code: 21 (unable to verify) ← Chain is incomplete

Verificar un certificado contra un archivo de cadena

openssl verify -CAfile chain.pem cert.pem
# Expected: cert.pem: OK

Verificar si el certificado y la clave coinciden

# These two hashes must be identical
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# For ECDSA keys:
openssl ec -in privkey.pem -pubout 2>/dev/null | openssl md5
openssl x509 -in cert.pem -pubkey -noout | openssl md5

Generar claves

ECDSA P-256 (recomendado)

openssl ecparam -genkey -name prime256v1 -noout -out privkey.pem

RSA 2048

openssl genrsa -out privkey.pem 2048

RSA 4096

openssl genrsa -out privkey.pem 4096

Generar un CSR

ECDSA

openssl req -new -key privkey.pem -out csr.pem -subj "/CN=example.com"

Con SANs (multi-dominio)

openssl req -new -key privkey.pem -out csr.pem \
  -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

Inspeccionar un CSR

openssl req -in csr.pem -noout -text

¿Qué es un CSR? →

Convertir entre formatos

PEM → PFX (para Windows/IIS)

openssl pkcs12 -export -out cert.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem

PFX → PEM

openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem
openssl pkcs12 -in cert.pfx -cacerts -nokeys -out chain.pem

PEM → DER

openssl x509 -in cert.pem -outform DER -out cert.der

DER → PEM

openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

Formatos de certificados explicados →

Depurar conexiones TLS

Probar qué versión de TLS se negocia

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | grep "Protocol"

Probar una versión TLS específica

# Test TLS 1.2
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_2 2>/dev/null | grep "Protocol"

# Test TLS 1.3
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_3 2>/dev/null | grep "Protocol"

Mostrar la negociación completa

openssl s_client -connect example.com:443 -servername example.com -msg

Verificar suites de cifrado soportadas

# List all ciphers the server accepts
nmap --script ssl-enum-ciphers -p 443 example.com

Generar un certificado autofirmado (solo desarrollo)

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

Para HTTPS confiable en localhost, usa mkcert en su lugar.

Crear fullchain.pem desde archivos separados

cat cert.pem chain.pem > fullchain.pem

El orden importa: tu certificado primero, luego el/los intermedios.

Preguntas frecuentes

¿Cómo instalo OpenSSL?

La mayoría de las distribuciones Linux lo incluyen. En macOS: brew install openssl. En Windows: instalar vía Git for Windows (incluye OpenSSL) o Chocolatey (choco install openssl).

¿Cuál es la diferencia entre openssl x509 y openssl s_client?

x509 lee un archivo de certificado local. s_client se conecta a un servidor remoto y recupera su certificado. Usa s_client para verificar un servidor en vivo; usa x509 para inspeccionar un archivo en disco.

¿Por qué mis comandos muestran «unable to load certificate»?

El archivo probablemente está codificado en DER (binario), no en PEM (texto). Añade -inform DER al comando:

openssl x509 -in cert.der -inform DER -noout -text

Artículos relacionados

Despliegue 2026-05-07
Cómo verificar el vencimiento de un certificado SSL
Verifica cuándo expira tu certificado SSL usando tu navegador, OpenSSL o herramientas en línea. Configura monitoreo para evitar vencimientos inesperados y tiempo de inactividad.
SSL y certificados 2026-05-07
Formatos de certificados SSL: PEM, PFX, DER explicados
Comprende los formatos de certificado PEM, PFX/PKCS#12 y DER. Aprende qué formato necesita tu servidor y cómo convertir entre ellos con OpenSSL.
SSL y certificados 2026-05-07
La cadena de confianza de certificados explicada
Cómo los navegadores verifican certificados SSL a través de una cadena desde la CA raíz a la CA intermedia hasta tu certificado. Aprende por qué el orden de la cadena importa y cómo solucionar errores de «certificado no confiable».
SSL y certificados 2026-05-07
Certificados ECC vs RSA: ¿cuál deberías elegir?
Compara certificados ECC (ECDSA P-256) y RSA (2048/4096 bits). Las claves ECC son más pequeñas y rápidas. Aprende por qué GetHTTPS usa ECC por defecto y cuándo RSA todavía tiene sentido.
Obtén un certificado SSL gratuito en tu navegador
Sin instalación, sin cuenta. Tu clave privada nunca sale de tu dispositivo.
Obtener certificado