Пароль автоответчика для OPENSSL с использованием HEREDOC

У меня есть следующая команда, но она не работает для меня...

cd /etc/postfix/ssl/ && openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 <<PASS
password
password
PASS

ОБНОВИТЬ:

Выход:

109 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
...............................++++++
...........++++++
e is 65537 (0x10001)
Enter pass phrase for smtpd.key:

Следует автоматически ответить на вопрос и поставить пароль автоматически.

Я всегда использую HEREDOC для автоматизации моих вопросов и ответов на Bash и работать нормально...

В чем здесь проблема?

2 ответа

Решение

Как @Graeme сказал ЗДЕСЬ

Я могу сделать с heredoc так:

Я должен добавить -passout stdin для openssl читать со стандартного ввода.

cd /etc/postfix/ssl/ && openssl genrsa  -passout stdin -des3 -rand /etc/hosts -out smtpd.key 1024 <<PASS
password
PASSW

OpenSSL (и OpenSSH) принимает меры для чтения пароля непосредственно из терминала, а не из stdin, в качестве меры безопасности.

Однако существует множество способов предоставить пароли для OpenSSL. Проверьте man openssl для раздела PASS PHRASE ARGUMENTS,

Так что вы могли бы сделать:

  openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 -passout "pass:mypassword"

... но для man-страницы: "Поскольку пароль виден утилитам (например," ps "в Unix), эту форму следует использовать только там, где безопасность не важна"

Или вы могли бы сделать:

printf '%s\n' "$PASS" | {
    openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 -passout fd:3
} 3<&0

... который предположительно более безопасен, чем другие варианты, потому что пароль не будет отображаться в пс.

Другие вопросы по тегам