Если вы не используете фразу-пароль, то закрытый ключ не шифруется никаким симметричным шифром - он выводится полностью незащищенным.
Вы можете сгенерировать пару ключей, указав пароль в командной строке, используя такой вызов (в данном случае пароль foobar
):
openssl genrsa -aes128 -passout pass:foobar 3072
Однако обратите внимание, что эта фраза-пароль может быть захвачена любым другим процессом, запущенным на компьютере в данный момент, поскольку аргументы командной строки обычно видны всем процессам.
Лучшая альтернатива - записать фразу-пароль во временный файл, защищенный правами доступа к файлу, и указать следующее:
openssl genrsa -aes128 -passout file:passphrase.txt 3072
Или введите пароль на стандартный ввод:
openssl genrsa -aes128 -passout stdin 3072
Вы также можете использовать именованный канал с параметром file:
или дескриптор файла.
Чтобы затем получить соответствующий открытый ключ, вам нужно использовать openssl rsa
, предоставляя ту же фразу-пароль с параметром -passin
, которая использовалась для шифрования закрытого ключа:
openssl rsa -passin file:passphrase.txt -pubout
(Это предполагает зашифрованный закрытый ключ при стандартном вводе - вместо этого вы можете прочитать его из файла, используя -in <file>
).
Пример создания 3072-битной пары секретного и открытого ключа в файлах с парой секретного ключа, зашифрованной паролем foobar
:
openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub