2014-03-04 71 views
2

OpenSSL的回答密碼我有以下的命令,但它不爲我工作...自動使用HEREDOC

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

UPDATE:

輸出是:

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 & A和做工精細...

這裏有什麼問題嗎?

+2

擊敗安全的​​目的! – devnull

+0

它以什麼方式不起作用?請描述問題。 – Biffen

+1

也許這有幫助嗎? http://unix.stackexchange.com/a/29186 –

回答

0

正如@Graeme說HERE

我可以做定界符像這樣:

我要補充-passout stdin OpenSSL的從標準輸入讀取。

cd /etc/postfix/ssl/ && openssl genrsa -passout stdin -des3 -rand /etc/hosts -out smtpd.key 1024 <<PASS 
password 
PASSW 
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的密碼不會顯示出來。

+0

謝謝....什麼是'3'和'3 <&0'? – MLSC

+1

文件描述符。http://www.gnu.org/software/bash /manual/html_node/Redirections.html - 有用的東西 – slim

+0

我運行第一個和第二個解決方案...但它不會自動回答 – MLSC