Sprawdź wersję:

$ openssl version
OpenSSL 3.3.2 3 Sep 2024 (Library: OpenSSL 3.3.2 3 Sep 2024)

Wygeneruj parę kluczy:

$ openssl genrsa -aes128 -out priv.pem 1024
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
$ cat priv.pem
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIC5TBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQnVYvSrff3GW2iMfo
eqVE6AICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEKk+vUrbVNHfDoaJ
TKopCX4EggKAefTvLIEF2JtODPGMWnyb7CWPBmI5A2YegP3zGb9S8Z0Q9uEe8HQX
IPmES04k6uD257vI9rDGuRgFlatgkYt6Ad9rFJJCnHhJ3lcxqbtZdSgnYWsvnGD/
bivtNKxxlg3wmrYCEc+L5Bi22q3nBUwwsrWMtpXiYeCXN3SVG8/6Cfhppwd3FfcG
iaUPRZ09yRkWKszg4mEhBJbxdUIoRHkgOQ9+utopIBbURSBYmbKR4vYelufEHJZ2
KzcnfA9bTdY0IQj3E4W0hIR+xo9WoTaxrTXPAjQjTxzCfvQ2FNmbMQJpwNueF5pf
s9I2faI8Qzg84ACJSQ043mHoM9+omQDtD3kJq+scpJse8nbjKoeOaXaiX6w/1a0m
yqUFOkncw6yUncG7ORMo5xAbJCF1jpaMK80SurqSnVWXzI9hNRLJUZwpoQR010zR
1t0Ni/e1KNjFJWHD+/KliWT2ccUcOkEGhY3gFjpHdRpUwXCxePDzGGmDfWbemZyp
xRFh4KiyOLdtXYf16St7om65h+qegjZ3bZ6JeewpIa/nqAYrBf5gaZpXXW9B4Wye
o3oiUxHq7Awfor/P3gQctkSq1bN3xAx9R+TYNyTnrHKGY0wWov4sR5xmogtCIJ0C
PCV5PF3gv7j+QKdbZ/ynehSaCO037GqdP6xIsWQGj9S6ASywpXmnLfw889GJdthW
0rhT7CQN6Mg+99R4xVZMyDRiVAbfGfk0IuLH8QVVZuB5KxqUetMAElKxq3kTe1sv
R7SWnsgw/DlzD9FdH4S15S6q64uC/WCxlfsApSaSGkJa1y9grdVqyyI5fS3n9ZMd
b+QvTHuWXbzgtsgR9repvdZcTbb5vUrQGg==
-----END ENCRYPTED PRIVATE KEY-----
$ openssl rsa -in priv.pem -noout -text
Enter pass phrase for priv.pem:
Private-Key: (1024 bit, 2 primes)
modulus:
    00:c3:41:31:dd:46:1f:ee:54:97:3b:17:fd:d8:d3:
    ee:62:0d:11:36:53:21:71:11:58:56:6c:f5:42:b3:
    4d:95:39:40:57:b3:5c:4a:9b:f8:3c:87:82:2a:1e:
    92:4a:6f:7c:06:f4:52:a8:aa:22:ff:ec:35:fe:10:
    8a:03:a3:08:88:5f:3e:a8:9e:c0:64:58:02:c2:e2:
    3f:70:9e:d3:87:c4:f6:98:25:9c:db:d2:35:a6:e6:
    e9:ee:b6:38:85:9f:c5:e2:b4:f9:9e:ea:8b:c8:39:
    7e:76:33:01:02:07:d4:67:ec:a4:9c:6a:2d:f4:59:
    73:a6:73:c2:01:b5:78:56:dd
publicExponent: 65537 (0x10001)
privateExponent:
    23:2d:38:ad:93:b7:a6:f9:68:71:86:05:fe:ad:57:
[...]
$ openssl rsa -in priv.pem -pubout > pub.pem
Enter pass phrase for priv.pem:
writing RSA key
$ cat pub.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDQTHdRh/uVJc7F/3Y0+5iDRE2
UyFxEVhWbPVCs02VOUBXs1xKm/g8h4IqHpJKb3wG9FKoqiL/7DX+EIoDowiIXz6o
nsBkWALC4j9wntOHxPaYJZzb0jWm5unutjiFn8XitPme6ovIOX52MwECB9Rn7KSc
ai30WXOmc8IBtXhW3QIDAQAB
-----END PUBLIC KEY-----
$ openssl rsa -in pub.pem -pubin -text -noout
Public-Key: (1024 bit)
Modulus:
    00:c3:41:31:dd:46:1f:ee:54:97:3b:17:fd:d8:d3:
    ee:62:0d:11:36:53:21:71:11:58:56:6c:f5:42:b3:
    4d:95:39:40:57:b3:5c:4a:9b:f8:3c:87:82:2a:1e:
    92:4a:6f:7c:06:f4:52:a8:aa:22:ff:ec:35:fe:10:
    8a:03:a3:08:88:5f:3e:a8:9e:c0:64:58:02:c2:e2:
    3f:70:9e:d3:87:c4:f6:98:25:9c:db:d2:35:a6:e6:
    e9:ee:b6:38:85:9f:c5:e2:b4:f9:9e:ea:8b:c8:39:
    7e:76:33:01:02:07:d4:67:ec:a4:9c:6a:2d:f4:59:
    73:a6:73:c2:01:b5:78:56:dd
Exponent: 65537 (0x10001)

Zaszyfruj plik kluczem publicznym:

echo "Zażółć gęślą jaźń" >secret.txt
openssl pkeyutl -encrypt -inkey pub.pem -pubin -in secret.txt -out secret.enc
$ hexdump -C secret.enc
00000000  1e 2a 16 bb 99 69 72 07  93 86 96 91 39 8d dd 43  |.*...ir.....9..C|
00000010  18 20 a6 2a bc 14 e6 dc  3a 3a bd 76 33 9a 7b 45  |. .*....::.v3.{E|
00000020  96 b7 b0 35 d9 ab bf 88  d7 e3 4b a5 51 56 5d 26  |...5......K.QV]&|
00000030  29 95 fe e5 c4 6e 4a 86  20 79 64 8f 35 51 ee 22  |)....nJ. yd.5Q."|
00000040  f9 a4 d2 fc 95 90 bb 42  a3 a9 d3 c7 6a 22 a9 d1  |.......B....j"..|
00000050  f1 f9 d1 cb d5 94 48 5a  d9 b0 7b 3d ec 50 68 41  |......HZ..{=.PhA|
00000060  48 59 1a bb de 24 97 71  e0 e4 be d5 5b a1 50 a6  |HY...$.q....[.P.|
00000070  fc 76 66 d2 07 f5 08 a0  bb 57 e4 44 70 e3 83 6e  |.vf......W.Dp..n|

Odszyfruj kluczem prywatnym:

$ openssl pkeyutl -decrypt -inkey priv.pem -in secret.enc > secret.dec
Enter pass phrase for priv.pem:
$ cat secret.dec
Zażółć gęślą jaźń

More information

Usuń hasło z klucza prywatnego:

$ openssl rsa -in priv.pem -out nopass.pem
Enter pass phrase for priv.pem:
writing RSA key

Refs