Как я могу избежать отката openssl, чтобы спросить пароль через /dev/tty
Я мог бы избежать ввода пароля с 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
версии терпят неудачу и не пытаются запросить фразу-пароль через консоль.:)