Search code examples
opensslssh-keys

OpenSSL unable to load Public Key


Trying to encrypt a text message via command line on OSX Yosomite 10.10.2

Created public .pem key like this:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -t PKCS8 > id_rsa.pem

If I try to encrypt myMessage.txt

openssl rsautl -encrypt -inkey ~/.ssh/id_rsa.pem -pubin -in ~/Desktop/myMessage.txt -out ~/Desktop/encrypted.txt

I get unable to load Public key

If I then type:

openssl asn1parse -in id_rsa.pem

Returns: Error: offset too large

But I have no idea how to fix it. What should I change to make it work?


Solution

  • Still don't know what went wrong in my question but found a solution:

    1. Generate RSA key:

      $ openssl genrsa -out key.pem 1024 
      $ openssl rsa -in key.pem -text -noout
      
    2. Save public key in pub.pem file:

      $ openssl rsa -in key.pem -pubout -out pub.pem 
      $ openssl rsa -in pub.pem -pubin -text -noout 
      
    3. Encrypt some data:

      $ echo test test test > file.txt 
      $ openssl rsautl -encrypt -inkey pub.pem -pubin -in file.txt -out file.bin 
      
    4. Decrypt encrypted data:

      $ openssl rsautl -decrypt -inkey key.pem -in file.bin 
      

    It works like a charm