Обычно пароль должен передаваться через приглашение openssl (т. Е. Удаление аргумента -passout pass:foobar
).
Если вы передаете пароль через командную строку, потому что вам нужно использовать его в другой части скрипта, вы можете использовать приведенный ниже пример:
echo -n Password:
read -s PASS
openssl genrsa -out keypair.pem -aes128 -passout pass:${PASS}
opnessl req -new -key keypair.pem -passin pass:${PASS}
Однако, если вы действительнонеобходимо генерировать ключи без взаимодействия с пользователем, вы можете использовать приведенный ниже пример, но я бы не рекомендовал его для любой производственной среды.
Создайте сценарий (например, auto_key_gen.sh), содержащий код ниже:
PASS=`openssl rand -hex 16`
openssl genrsa -out auto_keypair.pem -aes128 -passout pass:${PASS}
echo -n ${PASS} | openssl rsautl -encrypt -pubin -inkey $1 -out encrypted_pass.bin
Создайте личную пару ключей и извлеките открытый ключ:
openssl genrsa -out mykeypair.pem -aes128
openssl rsa -in mykeypair.pem -out mypubkey.pem -pubout
Храните личную пару ключей в надежном месте.Личный открытый ключ, который вы используете для запуска скрипта:
chmod +x auto_key_gen.sh
./auto_key_gen.sh mypubkey.pem
Сценарий генерирует случайный пароль и использует его для шифрования сгенерированной пары ключей (auto_keypair.pem).Пароль шифруется вашим личным открытым ключом и сохраняется в файле (encrypted_pass.bin).
Скрипт может хранить пароль в «памяти» для использования с другими командами openssl.
Youможет восстановить зашифрованный пароль, используя вашу личную пару ключей:
openssl rsautl -decrypt -inkey mykeypair.pem -in encrypted_pass.bin -out decrypted_pass.hex
И сценарий, и открытый ключ должны быть защищены от несанкционированного изменения.