我有以下命令,但它对我不起作用......
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上自动化我的Q&amp; A并且工作正常......
这里有什么问题?
答案 0 :(得分:3)
OpenSSL(和OpenSSH)采取措施直接从终端读取密码,而不是从stdin读取密码作为安全措施。
但是,有很多方法可以为OpenSSL提供密码。查看man openssl
部分PASS PHRASE ARGUMENTS
。
所以你可以这样做:
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 -passout "pass:mypassword"
...但是根据联机帮助页:“由于密码对于实用程序是可见的(例如Unix下的'ps'),因此只应在安全性不重要的地方使用此表单”
或者你可以这样做:
printf '%s\n' "$PASS" | {
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 -passout fd:3
} 3<&0
...据说比其他选项更安全,因为密码不会显示在ps中。
答案 1 :(得分:1)
正如@Graeme所说HERE
我可以像这样使用heredoc:
我必须为openssl添加-passout stdin
以从stdin中读取。
cd /etc/postfix/ssl/ && openssl genrsa -passout stdin -des3 -rand /etc/hosts -out smtpd.key 1024 <<PASS
password
PASSW