Generar par de claves RSA con OpenSSL (privada y pública)

En el corto tutorial de hoy vamos a ver cómo generar una clave pública y privada para el sistema criptográfico RSA.

Técnicamente hablando usaremos openssl para generar una clave privada RSA y luego vamos a derivar la clave pública de esta misma.

Generando clave privada

Para generar una clave privada usamos genrsa indicando el archivo en donde la clave será guardada y la longitud en bits.

Por ejemplo:

openssl genrsa -out clave_privada.pem 3072

Eso generará una clave privada RSA en el archivo clave_privada.pem de 3072 bits.

En este caso la salida es algo así (yo comparto la clave privada porque no la usaré para otra cosa, tú nunca compartas la tuya y si lo haces genera otra):

Recuerda que esa clave fue guardada en clave_privada.pem, ahora vamos a derivar la pública. Con el ejemplo:

openssl rsa -in clave_privada.pem -pubout -out clave_publica.pem

En este caso la clave de entrada es clave_privada.pem y vamos a colocar la clave pública en clave_publica.pem. El archivo tiene el siguiente contenido:

Y con eso has generado un par de claves RSA. Ahora puedes encriptar usando criptografía asimétrica o firmar algo de manera digital.

Recuerda que nunca debes compartir tu clave privada, esa debe estar en un lugar seguro. Tampoco debes reutilizar claves, y si has expuesto una, mejor vuelve a generar el par.

Por cierto, entre más bits más seguridad pero necesitarás más poder de procesamiento.

Con OpenSSL versión 3

A partir de la versión 3 de OpenSSL, el formato por defecto para las claves privadas es el PKCS#8. Si tú quieres mantener el formato anterior PKCS#1 puedes convertir la clave generada así:

openssl pkey -in clave_privada.pem -traditional -out clave_privada_tradicional.pem

La diferencia entre PKCS 1 y 8, es que para el caso de PKCS#1 su encabezado comienza con —–BEGIN RSA PRIVATE KEY—–, pero en el caso de PKCS#8 su encabezado comienza con —–BEGIN PRIVATE KEY—–. Básicamente la diferencia es el “RSA”.

Para el caso de la clave pública, una vez que haya sido derivada de la clave privada en formato PKCS#8, ejecuta:

openssl rsa -pubin -in clave_publica.pem -RSAPublicKey_out -out clave_publica_tradicional.pem

Te repito que esto es solo para cuando necesitas el par de clave específicamente en PKCS#1, ya que el PKCS#8 es mejor.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario