Я мог бы избежать ввода пароля с помощью OpenSSL 1.0.2g , когда он получил зашифрованный ключ без пароля, , но с OpenSSL 1.1.0g Я не могу делай больше.
Можно ли избежать запроса пароля при любых обстоятельствах?
Моя проблема
openssl rsa -in "${KEY_PATH}" -passin "pass:${PASSPHRASE}"
Если пользователь пропустил настройку ${PASSPHRASE}
для зашифрованного ключа, старый openssl
вернул с ошибкой , но новые запасные варианты для чтения парольной фразы с помощью /dev/tty
(проверено с помощью strace
)
Я пытался достичь исходного поведения всеми доступными -passin
методами (в руководстве openssl ), но все они теперь вернулись к пользовательскому вводу.
Можно ли как-нибудь закрыть команду /dev/tty
для команды, чтобы избежать этого поведения блокировки в автоматической среде?
Простое воспроизведение
openssl genrsa -aes128 -passout 'pass:foobar' -out 'enc.key' 1024
openssl rsa -in 'enc.key' -passin 'pass:'
С OpenSSL 1.0.2g :
unable to load Private Key
139745720125080:error:0906A068:PEM routines:PEM_do_header:bad password read:pem_lib.c:457:
Удалил сообщение об ошибке и прервался не с 0
кодом завершения, как я ожидал.
С OpenSSL 1.1.0g :
Enter pass phrase for enc.key:
Блокировка ...
Смешная часть
Если пароль не пустой, но неверный, обе эти версии openssl
завершаются ошибкой и не пытаются запросить пароль через консоль. :)