OpenSSL es una aplicación multiusos en la gestión de certificados, si quieres ser un sysadmin te sorprenderá las veces que tendrás que lidiar con ella.
En este artículo de hoy, veremos el uso de los comandos de OpenSSL más usados en un entorno de trabajo real.
Antes de comenzar, debes aprender las abreviaturas más utilizadas a la hora de tratar con los certificados.
- SSL – Secure Socket Layer.
- CSR – Solicitud de firma de certificado.
- TLS – Seguridad de la capa de transporte.
- PEM – Privacidad de los correos mejorada.
- DER – Especificar reglas de codificación.
- SHA – Algoritmo hash criptográfico.
- PKCS – Estándares de criptografía de la clave pública.
Uso y comandos de OpenSSL
El uso y comandos de OpenSSL lo dividimos por secciones en cinco apartados según su finalidad.
- Solicitar certificados y generar claves.
- Crear certificados autofirmados.
- Visualizar y verificar los certificados.
- Convertir certificados.
- Comprobar certificados SSL.
En nuestros ejemplos utilizaremos el dominio «sololinux.es«, comenzamos…
Solicitar certificados y generar claves
Como norma general, al solicitar un nuevo certificado SSL, debemos generar una solicitud de firma de certificado o CSR con una nueva clave privada:
openssl req -sha256 -nodes -newkey rsa:2048 -keyout www.sololinux.es.key -out www.sololinux.es.csr
Generar una nueva solicitud de certificado usando una clave privada que ya tenemos:
openssl req -new -sha256 -key www.sololinux.es.key -out www.sololinux.es.csr
Generamos una solicitud de certificado desde de un certificado que ya existe:
openssl x509 -x509toreq -in www.sololinux.es.crt -out www.sololinux.es.csr -signkey www.sololinux.es.key
Generar una nueva clave privada RSA:
openssl genrsa -out www.sololinux.es.key 2048
Cifrar una clave privada con una frase de texto como contraseña:
openssl rsa -in www.sololinux.es.key -out www.sololinux.es.key -des3
Eliminar la frase de texto como contraseña de una clave privada:
openssl rsa -in www.sololinux.es.key -out www.sololinux.es.key
Generar una nueva clave privada ECC:
openssl ecparam -out sololinux.key -name prime256v1 -genkey
Crear certificados autofirmados
Si por motivos de pruebas, por que trabajas en local, o cualquier otro tema, no quieres ningún certificado ajeno que sea online, puedes generar tu mismo un certificado autofirmado con una validez de un año (puedes modificar la duración en «days 365»).
openssl req -x509 -newkey rsa:2048 -nodes -keyout www.sololinux.es.key -out www.sololinux.es.crt -days 365
Visualizar y verificar los certificados
Ver y verificar una solicitud de certificado (CSR):
openssl req -noout -text -verify -in www.sololinux.es.csr
Verificar y mostrar las keys:
openssl rsa -noout -text -check -in www.sololinux.es.key
Visualizar un certificado codificado PEM:
openssl x509 -noout -text -in www.sololinux.es.crt
Ver un certificado codificado en PKCS#7:
openssl pkcs7 -print_certs -in www.sololinux.es.p7b
Ver un certificado y sus claves codificadas en PKCS#12:
openssl pkcs12 -info -in www.sololinux.es.pfx
Verificar una conexión SSL y ver sus certificados:
openssl s_client -connect www.sololinux.es:443
ejemplo…
Comprobar si un certificado, una solicitud, y su clave privada, tienen la misma clave pública:
openssl x509 -noout -modulus www.sololinux.es.crt | openssl sha256 openssl req -noout -modulus www.sololinux.es.csr | openssl sha256 openssl rsa -noout -modulus www.sololinux.es.key | openssl sha256
Verificar el certificado principal y sus intermedios (en servidores web):
openssl verify -purpose sslserver -CAfile certificatebundle.pem -verbose www.sololinux.es.crt
Convertir certificados
Convertir PKCS#12 con clave privada y certificado, a PEM:
openssl pkcs12 -nodes -in www.sololinux.es.pfx -out www.sololinux.es.crt
Convertir de PEM a PKCS#12:
openssl pkcs12 -export -in www.sololinux.es.crt -inkey www.sololinux.es.key -out www.sololinux.es.pfx
Convertir de PKCS#7 (.p7b .p7c) a PEM:
openssl pkcs7 -print_certs -in www.sololinux.es.p7b -out www.sololinux.es.crt
Convertir de PEM a PKCS#7:
openssl crl2pkcs7 -nocrl -certfile www.sololinux.es.crt -out www.sololinux.es.p7b
Convertir de DER (.crt .cer o .der) a PEM:
openssl x509 -inform der -in certificate.cer -out certificate.pem
Convertir de PEM a DER:
openssl x509 -outform der -in certificate.pem -out certificate.cer
Comprobar certificados SSL
openssl s_client -connect https://www.sololinux.es:443
Dependiendo de la configuración de seguridad de tu servidor, te imprimirá un error similar a…
getaddrinfo: Servname not supported for ai_socktype
connect:errno=0
Si es tu caso puedes ejecutar lo siguiente:
openssl s_client -connect sololinux.es:443
Estas ejecuciones que hemos visto, son las más comunes en OpenSSL, compártelas en tus redes sociales.
Uso y comandos de OpenSSL