Ответ 1
Если вы не используете кодовую фразу, тогда закрытый ключ не зашифрован никаким симметричным шифрованием - он выводится полностью незащищенным.
Вы можете создать пару ключей, поставляя пароль в командной строке, используя подобный вызов (в этом случае пароль 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