Как я могу избежать использования openssl для запроса пароля через / dev / tty? - PullRequest
0 голосов
/ 06 ноября 2018

Я мог бы избежать ввода пароля с помощью 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 завершаются ошибкой и не пытаются запросить пароль через консоль. :)

...