Hoy vamos a ver una alternativa a la generación de certificados SSL con OpenSSL. Genkey (Red Hat Keypair Generation) es un comando disponible como parte del paquete crypto-utils:
# yum whatprovides */genkey Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfile .... .... crypto-utils-2.4.1-24.2.el6.i686 : SSL certificate and key management utilities Repo : base Matched from: Filename : /usr/bin/genkey
Aprovechamos entonces para instalarlo:
# yum install crypto-utils
Echando un vistazo a la ayuda podemos ver las opciones del comando:
# genkey Usage: genkey [options] servername --test Test mode, faster seeding, overwrite existing key --genreq Generate a Certificate Signing Request (CSR) --makeca Generate a self-signed certificate for a CA --days Days until expiry of self-signed certificate (default 30) --renew CSR is for cert renewal, reusing existing key pair, openssl certs only --cacert Renewal is for a CA certificate, needed for openssl certs only --nss Use the nss database for keys and certificates --gdb For package maintainers, to trace into the nss utilities
¡Qué motivo podríamos tener para utilizar genkey en lugar de openssl? Corregidme si hay algún otro más, pero en principio lo que yo veo es que no tenemos que acordarnos de los comandos de openssl ya que genkey es un asistente en modo text/gráfico desde línea de comandos que nos guía con todos los pasos.
Si quisieramos generar un certificado self-signed para ssl.rm-rf.es seguiríamos estos pasos:
# genkey ssl.rm-rf.es
Comienza el asistente, que ya nos indica donde van a guardarse los ficheros resultantes (llaves privadas, certificados, certificate requests, CA requests, etc.)
Indicamos el tamaño de la llave, a mayor tamaño en bits, mayor seguridad, también costará más tiempo generarla:
Esperamos a la generación de los bits aleatorios:
Y la generación de datos aleatorios. Se recomienda mover el ratón o escribir en la consola del servidor/máquina para acelerar el proceso:
Si quisiéramos enviar una petición de CSR a una entidad certificadora autoritativa (CA) este sería el momento:
Para mayor seguridad podemos encriptar la llave privada del certificado. La frase de paso (passphrase) que indiquemos tendrá que ser introducida cada vez que arranquemos el servicio web seguro.
Por último introducimos los datos de nuestro certificado:
Una vez aceptado podremos ver en la línea de comandos la ejecución del proceso por genkey:
/usr/bin/keyutil -c makecert -g 1024 -s "CN=ssl.rm-rf.es, OU=IT, O=Rm-RF, L=Zaragoza, ST=Zaragoza, C=ES" -v 1 -a -z /etc/pki/tls/.rand.2492 -o /etc/pki/tls/certs/ssl.rm-rf.es.crt -k /etc/pki/tls/private/ssl.rm-rf.es.key cmdstr: makecert cmd_CreateNewCert command: makecert keysize = 1024 bits subject = CN=ssl.rm-rf.es, OU=IT, O=Rm-RF, L=Zaragoza, ST=Zaragoza, C=ES valid for 1 months random seed from /etc/pki/tls/.rand.2492 output will be written to /etc/pki/tls/certs/ssl.rm-rf.es.crt output key written to /etc/pki/tls/private/ssl.rm-rf.es.key Generating key. This may take a few moments... Made a key Opened tmprequest for writing (null) Copying the cert pointer Created a certificate Wrote 882 bytes of encoded data to /etc/pki/tls/private/ssl.rm-rf.es.key Wrote the key to: /etc/pki/tls/private/ssl.rm-rf.es.key
Y nuestra private key y certificado ya están disponibles para su uso.