Solución:
No utilice la línea de comandos de OpenSSL para cifrar o firmar nada. La línea de comandos de OpenSSL es una herramienta de depuración. Para encriptar o firmar un mensaje, utilice una herramienta diseñada para este propósito, como GPG.
Un archivo de clave privada contiene toda la información necesaria para construir la clave pública. Si tiene una clave privada en un formato que OpenSSL entiende y desea obtener la clave pública correspondiente, puede usar openssl pkey -pubout …
. Pero ese no es el formato que necesita GPG. GPG genera sus propias claves.
La clave privada se usa para descifrar y firmar cosas. No lo usa para cifrar. Usas la clave pública para eso. Pero openssl genrsa
no generará la clave pública, solo la privada. Para cifrar cosas, primero debe generar la clave pública (por lo que tiene una Par de claves: privado y público):
openssl rsa -in yourdomain.key -outform PEM -pubout -out public.pem
Esto creará public.pem
archivo con, bueno, la clave pública. Úselo para encriptar el archivo:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.enc
Para descifrar más tarde, usa la clave privada:
openssl rsautl -decrypt -inkey yourdomain.key -in file.enc -out file.dec