How do I do public-key encryption with openssl?

OpenSSL is a public-key crypto library (plus some other random stuff). Here’s how to do the basics: key generation, encryption and decryption. We’ll use RSA keys, which means the relevant openssl commands are genrsa, rsa, and rsautl.

# Alice generates her private key `priv_key.pem`
openssl genrsa -out priv_key.pem 2048

# Alice extracts the public key `pub_key.pem` and sends it to Bob
openssl rsa -pubout -in priv_key.pem -out pub_key.pem

# Bob encrypts a message and sends `encrypted_with_pub_key` to Alice
openssl rsautl -encrypt -in cleartext -out encrypted_with_pub_key -inkey pub_key.pem -pubin

# Alice decrypts Bob's message
openssl rsautl -decrypt -in encrypted_with_pub_key -inkey priv_key.pem
Tagged .
👋 I'm Jim, a full-stack product engineer. Want to build an amazing product and a profitable business? Read more about me or Get in touch!

Similar posts

More by Jim

This page copyright James Fisher 2017. Content is not associated with my employer. Found an error? Edit this page.