Crear, gestionar y convertir certificados SSL con OpenSSL
Uno de los comandos más populares en SSL para crear, convertir, gestionar los Certificados SSL es OpenSSL.
Habrá muchas situaciones en las que tendrá que tratar con OpenSSL de varias maneras, y aquí las he enumerado para usted como una práctica hoja de trucos.
En este artículo, hablaré de los comandos OpenSSL de uso frecuente para ayudarle en el mundo real.
Algunas de las abreviaturas relacionadas con los certificados.
- SSL – Capa de sockets seguros
- CSR – Solicitud de firma de certificado
- TLS – Seguridad de la capa de transporte
- PEM – Correo de privacidad mejorada
- DER – Reglas de codificación distinguidas
- SHA – Algoritmo hash seguro
- PKCS – Normas de criptografía de clave pública
Nota: Un curso sobre el funcionamiento de SSL/TLS le resultará útil si no está familiarizado con los términos.
Crear una nueva clave privada y una solicitud de firma de certificado
openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key
El comando anterior generará una CSR y un archivo de clave RSA de 2048 bits. Si tiene intención de utilizar este certificado en Apache o Nginx, deberá enviar este archivo CSR a la autoridad emisora de certificados, y ellos le proporcionarán un certificado firmado principalmente en formato der
o pem
que deberá 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 claves con RSA de 2048 bits. También he incluido sha256 ya que se considera más seguro en este momento.
Consejo: por defecto, generará un certificado autofirmado válido sólo durante un mes, por lo que puede considerar definir el parámetro -days para ampliar la validez.
Ej: para tener un autofirmado válido durante dos años.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Verifique el archivo CSR
openssl req -noout -text -in geekflare.csr
La verificación es esencial para asegurarse de que está enviando la CSR a la autoridad emisora con los detalles requeridos.
Crear clave privada RSA
openssl genrsa -out clave.privada 2048
Si sólo necesita generar una clave privada RSA, puede utilizar el comando anterior. He incluido 2048 para una encriptación más fuerte.
Eliminar la frase de contraseña de la clave
openssl rsa -in certkey.key -out nopassphrase.key
Si está utilizando la frase de contraseña en el archivo de clave y utiliza Apache, entonces cada vez que inicie, tendrá que introducir la contraseña. Si usted está molesto con la introducción de una contraseña, entonces usted puede utilizar el anterior openssl rsa -in geekflare.key -check para eliminar la clave passphrase de una clave existente.
Verificar la clave privada
openssl rsa -in certkey.key -check
Si duda de su archivo de claves, puede utilizar el comando anterior para comprobarlo.
Verificar archivo de certificado
openssl x509 -in certfile.pem -text -noout
Si desea validar los datos del certificado como CN, OU, etc., puede utilizar el comando anterior que le proporcionará los detalles del certificado.
Verificar la Autoridad Firmante del Certificado
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
La autoridad emisora de certificados firma todos los certificados y en caso de que necesite comprobarlos.
Comprobar el valor hash de un certificado
openssl x509 -noout -hash -in bestflare.pem
Convertir DER a formato PEM
openssl x509 -inform der -in sslcert.der -out sslcert.pem
Normalmente, la autoridad de certificación le dará los certificados SSL en formato .der, y si necesita utilizarlos en formato apache o .pem, entonces el comando anterior le ayudará.
Convertir formato PEM a DER
openssl x509 -formato 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 utilizar un cert con la aplicación java o con cualquier otra que sólo acepte el formato PKCS#12, puede utilizar el comando anterior, que generará un único archivo pfx que contendrá el certificado y la clave.
Consejo: también puede incluir el certificado en cadena pasando -chain como se indica 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 certificado.csr -key existente.key -nuevo
Si no desea crear una nueva clave privada en lugar de utilizar una existente, puede seguir con el comando anterior.
Comprobar el contenido del cert en formato PKCS12
openssl pkcs12 -info -nodos -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 le ayudará a ver el contenido del archivo PKCS12.
Convertir el formato PKCS12 en un certificado PEM
openssl pkcs12 -in cert.p12 -out cert.pem
Si desea utilizar el formato pkcs12 existente con Apache o sólo en formato pem, esto le será útil.
Probar el certificado SSL de una URL concreta
openssl s_client -connect tuurl.com:443 -showcerts
Utilizo esto bastante a menudo para validar el certificado SSL de una URL particular desde el servidor. Es muy útil para validar el protocolo, el cifrado y los detalles del cert.
Averiguar la versión de OpenSSL
versión openssl
Si es responsable de garantizar la seguridad de OpenSSL, 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 certificado.pem -fechas
Útil si está planeando poner algún control para comprobar la validez. Le mostrará una fecha en sintaxis notBefore y notAfter. notAfter es la que tendrá que verificar para confirmar si un certificado ha caducado o sigue siendo válido.
Ej:
[root@Chandan opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=4 jul 14:02:45 2015 GMT notAfter=4 de agosto 09:46:42 2015 GMT [root@Chandan opt]#
Comprobar la fecha de caducidad del certificado de la URL SSL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout -enddate
También es útil si desea controlar la fecha de caducidad del certificado SSL de forma remota o de una URL en particular.
Ej:
[root@Chandan opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=8 dic 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 -connectar secureurl.com:443 -tls1
Para comprobar TLS 1.1
openssl s_client -connectar secureurl.com:443 -tls1_1
Para comprobar TLS 1.2
openssl s_client -connectar secureurl.com:443 -tls1_2
Si está asegurando un servidor web y necesita validar si SSL V2/V3 está activado o no, puede utilizar el comando anterior. Si está activado, obtendrá «CONECTADO«, si no, «fallo de handshake»
Verificar si el cifrado particular es aceptado en la URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Si está trabajando en hallazgos de seguridad y los resultados del pen test muestran que alguno de los cifrados débiles es aceptado, entonces para validarlo, puede utilizar el comando anterior.
Por supuesto, tendrá que cambiar el cifrado y la URL contra la que desea realizar la prueba. Si el cifrado mencionado es aceptado, entonces obtendrá «CONECTADO» de lo contrario «fallo de handshake»
Espero que los comandos anteriores le ayuden a saber más sobre OpenSSL para gestionar certificados SSL para su sitio web.