Cree, administre y convierta certificados SSL con OpenSSL
Uno de los comandos más populares en SSL para crear, convertir y administrar los certificados SSL es OpenSSL.
Habrá muchas situaciones en las que tendrá que lidiar con OpenSSL de varias maneras, y aquí las he enumerado para usted como una práctica hoja de trucos.
En este artículo, hablaré sobre los comandos OpenSSL de uso frecuente para ayudarlo en el mundo real.
Algunas de las abreviaturas relacionadas con los certificados.
- SSL: capa de conexión segura
- CSR – Solicitud de firma de certificado
- TLS: seguridad de la capa de transporte
- PEM: correo con privacidad mejorada
- DER – Reglas de codificación distinguidas
- SHA: algoritmo hash seguro
- PKCS: estándares de criptografía de clave pública
Nota: Curso de funcionamiento de SSL/TLS sería útil si no está familiarizado con los términos.
Tabla de contenido
Crear una nueva solicitud de firma de certificado y clave privada
openssl req -out kirukiru.es.csr -newkey rsa:2048 -nodes -keyout kirukiru.es.key
El comando anterior generará CSR y un archivo de clave RSA de 2048 bits. Si tiene la intención de usar este certificado en Apache o Nginx, debe enviar este archivo CSR a la autoridad emisora del certificado, y le darán un certificado firmado principalmente en formato der o pem que debe configurar en el servidor web Apache o Nginx. .
Crear un certificado autofirmado
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
El comando anterior generará un certificado autofirmado y un archivo de clave con RSA de 2048 bits. También he incluido sha256 porque se considera más seguro en este momento.
Sugerencia: de forma predeterminada, generará un certificado autofirmado válido solo por un mes, por lo que puede considerar definir el parámetro días para extender la validez.
Ej: tener auto-firmado válido por dos años.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Verificar archivo CSR
openssl req -noout -text -in kirukiru.es.csr
La verificación es esencial para asegurarse de que está enviando CSR a la autoridad emisora con los detalles requeridos.
Crear clave privada RSA
openssl genrsa -out private.key 2048
Si solo necesita generar una clave privada RSA, puede usar el comando anterior. He incluido 2048 para un cifrado más fuerte.
Quitar frase de contraseña de la clave
openssl rsa -in certkey.key -out nopassphrase.key
Si está utilizando una frase de contraseña en el archivo de clave y utiliza Apache, cada vez que inicie, debe ingresar la contraseña. Si le molesta ingresar una contraseña, puede usar la verificación anterior de openssl rsa -in kirukiru.es.key -check para eliminar la clave de frase de contraseña de una clave existente.
Verificar clave privada
openssl rsa -in certkey.key –check
Si duda de su archivo clave, puede usar el comando anterior para verificar.
Verificar archivo de certificado
openssl x509 -in certfile.pem -text –noout
Si desea validar los datos del certificado como CN, OU, etc., puede usar un comando anterior que le dará los detalles del certificado.
Verificar la autoridad del firmante del certificado
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
La autoridad emisora de certificados firma cada certificado y en caso de que necesite verificarlos.
Comprobar el valor hash de un certificado
openssl x509 -noout -hash -in bestflare.pem
Convertir formato DER a PEM
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Por lo general, la autoridad de certificación le dará un certificado SSL en formato .der, y si necesita usarlos en formato apache o .pem, el comando anterior lo ayudará.
Convertir formato PEM a DER
openssl x509 –outform der –in sslcert.pem –out sslcert.der
En caso de que necesite cambiar el formato .pem a .der
Convierta el certificado y la clave privada al formato PKCS#12
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Si necesita usar un certificado con la aplicación Java o con cualquier otra que acepte solo el formato PKCS # 12, puede usar el comando anterior, que generará un solo pfx que contiene el certificado y el archivo de clave.
Sugerencia: también puede incluir el certificado de cadena pasando –chain como se muestra a continuación.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Crear CSR utilizando una clave privada existente
openssl req –out certificate.csr –key existing.key –new
Si no desea crear una nueva clave privada en lugar de usar una existente, puede usar el comando anterior.
Verifique el contenido del certificado de formato PKCS12
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 es un formato binario, por lo que no podrá ver el contenido en el bloc de notas u otro editor. El comando anterior lo ayudará a ver el contenido del archivo PKCS12.
Convertir formato PKCS12 a certificado PEM
openssl pkcs12 –in cert.p12 –out cert.pem
Si desea usar el formato pkcs12 existente con Apache o solo en formato pem, esto será útil.
Probar el certificado SSL de una URL en particular
openssl s_client -connect yoururl.com:443 –showcerts
Lo uso con bastante frecuencia para validar el certificado SSL de una URL particular del servidor. Esto es muy útil para validar el protocolo, el cifrado y los detalles del certificado.
Descubra la versión de OpenSSL
openssl version
Si usted es responsable de garantizar que OpenSSL sea seguro, probablemente una de las primeras cosas que debe hacer es verificar la versión.
Comprobar la fecha de caducidad del certificado del archivo PEM
openssl x509 -noout -in certificate.pem -dates
Útil si planea poner algún monitoreo para verificar la validez. Le mostrará una fecha en la sintaxis notBefore y notAfter. notAfter es uno que tendrá que verificar para confirmar si un certificado ha caducado o sigue siendo válido.
Ex:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
Comprobar la fecha de caducidad del certificado de la URL de SSL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Otro útil si planea monitorear la fecha de vencimiento del certificado SSL de forma remota o una URL en particular.
Ex:
[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Compruebe si se acepta SSL V2 o V3 en la URL
Para comprobar SSL V2
openssl s_client -connect secureurl.com:443 -ssl2
Para comprobar SSL V3
openssl s_client -connect secureurl.com:443 –ssl3
Para comprobar TLS 1.0
openssl s_client -connect secureurl.com:443 –tls1
Para comprobar TLS 1.1
openssl s_client -connect secureurl.com:443 –tls1_1
Para comprobar TLS 1.2
openssl s_client -connect secureurl.com:443 –tls1_2
Si está asegurando un servidor web y necesita validar si SSL V2/V3 está habilitado o no, puede usar el comando anterior. Si está activado, obtendrá «CONECTADO», de lo contrario, «fallo de protocolo de enlace».
Verifique si el cifrado en particular se acepta en la URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Si está trabajando en hallazgos de seguridad y los resultados de la prueba de penetración muestran que se aceptan algunos de los cifrados débiles, entonces para validar, puede usar el comando anterior.
Por supuesto, tendrá que cambiar el cifrado y la URL con los que desea realizar la prueba. Si se acepta el cifrado mencionado, obtendrá «CONECTADO», de lo contrario, «fallo de protocolo de enlace».
Espero que los comandos anteriores lo ayuden a saber más sobre OpenSSL para administrar certificados SSL para su sitio web.