Skip to content

OpenSSL

En el mundo digital actual, la seguridad de las comunicaciones es fundamental. OpenSSL, una potente herramienta de código abierto, juega un papel crucial en este panorama. Ofrece una plataforma robusta para implementar protocolos criptográficos que aseguran la privacidad y la integridad de los datos en tránsito. Esta suite de herramientas permite la creación, gestión y verificación de certificados digitales, facilitando la autenticación de identidades en entornos online.

Generación de una Autoridad de Certificación (CA) Autofirmada

Crear una CA autofirmada es el primer paso hacia un entorno de seguridad basado en certificados. Con OpenSSL, este proceso se simplifica mediante comandos en la terminal. Ejecutando el siguiente comando, se puede generar la clave privada y el certificado para la CA:

1
2
3
4
5
# Generar clave privada para la CA
openssl genrsa -out ca.key 2048

# Generar certificado autofirmado para la CA
openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.crt

Firma de Certificados con la CA

Una vez que la CA está lista, se pueden firmar certificados con ella para validar la autenticidad de entidades. Aquí se muestra cómo firmar un certificado con la CA previamente creada:

1
2
3
4
5
6
7
8
# Generar clave privada para el certificado
openssl genrsa -out ejemplo.key 2048

# Crear una solicitud de firma de certificado (CSR)
openssl req -new -key ejemplo.key -out ejemplo.csr

# Firmar el certificado usando la CA
openssl x509 -req -in ejemplo.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out ejemplo.crt -days 365 -sha256

Creación de Certificados Autofirmados

Además de generar una CA y firmar certificados, OpenSSL permite la creación de certificados autofirmados, útiles en entornos de desarrollo o pruebas. A continuación, se muestra cómo crear un certificado autofirmado:

1
2
3
4
5
6
7
8
# Generar clave privada para el certificado autofirmado
openssl genrsa -out tls.key 2048

# Crear el certificado autofirmado
openssl req -new -key tls.key -x509 -days 365 -out tls.crt -subj "/C=ES/ST=Madrid/L=Madrid/O=Organization/OU=ORG/CN=domain"

# Crear el certificado autofirmado con varios subdominios
openssl req -new -key tls.key -x509 -days 365 -out tls.crt -subj "/C=ES/ST=Madrid/L=Madrid/O=Organization/OU=ORG/CN=domain1" -addext "subjectAltName=DNS:domain1,DNS:domain2"

Verificación de un Certificado

La verificación de la autenticidad de un certificado es crucial. Mediante comandos en la consola, OpenSSL ofrece la posibilidad de verificar la validez de un certificado:

# Verificar un certificado y mostrar información básica
openssl verify -CAfile ca.crt ejemplo.crt

# Verificar un certificado y mostrar información detallada
openssl verify -verbose -CAfile ca.crt ejemplo.crt

# Verificar un certificado y mostrar la cadena de certificación
openssl verify -show_chain -CAfile ca.crt ejemplo.crt

# Verificar un certificado y mostrar las políticas de certificación
openssl verify -policy_print -CAfile ca.crt ejemplo.crt

Visualización de la Información de un Certificado

Para obtener detalles específicos de un certificado, puedes utilizar OpenSSL en la consola. A continuación se muestra cómo ver la información de un certificado:

1
2
3
4
5
# Mostrar la información de un certificado en consola
openssl x509 -in ejemplo.crt -text -noout

# Ver solo las fechas de validez de un certificado
openssl x509 -in ejemplo.crt -noout -dates

Certificados P12

Para convertir certificados .p12 a texto plano tenemos los siguientes comandos:

Extraer la clave:

openssl pkcs12 -in archivo.p12 -nocerts -nodes -out priv.key

Extraer el certificado:

openssl pkcs12 -in archivo.p12 -clcerts -nokeys -out cert.crt

Extraer los certificados intermedios y CA:

openssl pkcs12 -in archivo.p12 -cacerts -nokeys -out ca_bundle.crt

Mostrar todo el contenido del certificado:

openssl pkcs12 -in archivo.p12 -info