Shortcuts: comandos OpenSSL para generar claves, certificados y testear conexiones

OpenSSL es una herramienta extremadamente potente, la cual permite hacer todo tipo de manejos relacionados a TLS/SSL, desde creación de claves y certificados, realizar conexiones tipo telnet a servicios que se ejecutan sobre SSL, hasta generar hashes de archivos, entre otras cosas.
A continuación les dejo un listado de comandos útiles a realizar con OpenSSL. La mayoría se centran en la creación y manipulación de claves y certificados, algo que todo administrador ha tenido que hacer alguna vez.
Ya había escrito sobre la creación de certificados en el artículo Certificados Digitales, donde podrán encontrar una explicación más detallada sobre ello. En éste la idea es dejar un acceso rápido a comandos que nos serán muy útiles, además de proveer varios comandos adicionales a los descriptos anteriormente.
Cabe mencionar que muchos de estos comandos los aprendí gracias al artículo The Most Common OpenSSL Commands y los completé con el excelente OpenSSL Command-Line HOWTO y Creating an SSL Certificate of Authority.


Claves

Generar clave RSA de 4096 bits encriptada con 3des:
  $ openssl genrsa -des3 -out superkey.key 4096

Desencriptar la clave privada
  $ openssl rsa -in superkey.key -out super-decrypted.key

Extraer la clave privada de un archivo en formato PKCS#12:
  $ openssl pkcs12 -in certificad.pfx -out clave.pem -nodes -nocerts

Verificar clave RSA:
  $ openssl rsa -in interbankingtestmil-open.pkcs -check

 
Convertir formatos

Convertir clave de formato tradicional a pkcs8:
  $ openssl pkcs8 -in key.pem -topk8 -out pkcskey.pkcs

Convertir un certificado PEM y una clave privada en un archivo formato PKCS#12 (.pfx o p12)
  $ openssl pkcs12 -export -out certificado.pfx -inkey clave.pem -in certificado.crt -certfile certificadoCA.crt
 
 
Certificados

Crear una CA Propia con validez de 10 años y clave RSA de 4096 bits:
  $ openssl req -new -x509 -days 3650 -extensions v3_ca -newkey rsa:4096 -keyout private/newca.pem -out newca.crt //-config /etc/ssl/openssl.cnf

Generar un request de certificado:
  $ openssl req -new -key superkey.key -out certrequest.csr

Autofirmar request de certificado (CSR):
  $ openssl x509 -req -days 3650 -in cert-request.csr -signkey ca.key -out certificado.crt
 
Firmar request con CA:
  $ openssl ca -in cert-request.csr -out certificado.crt -days 3650

Crear clave y certificado autofirmado en un solo paso:
  $ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

Extraer el certificado incluído en un contenedor PKCS#12:
  $ openssl pkcs12 -in certificad.pfx -out certificado.crt -nodes -nokeys

Ver los campos de un request de certificado:
  $ openssl req -noout -text -in certrequest.csr

Ver campos del certificado:
  $ openssl x509 -in certificado.crt -text -noout
 
Ver campos de un contenedor PKCS#12:
  $ openssl pkcs12 -info -in certificado.pfx


Otras utilidades

Conectar a un servicio que se ejecuta sobre SSL (por ejemplo HTTPS):
  $ openssl s_client -connect servidor:443

Calcular el hash MD5, SHA1, SHA2, etc de un archivo y de un texto
  $ openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] archivo
  $ echo "texto" | openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1]

0 comentarios:

Publicar un comentario