Scripting
期望腳本:刪除私鑰上的密碼
我正在嘗試刪除私鑰上的密碼。手動操作很簡單,我執行這個命令並輸入密碼:
openssl rsa <newkey.pem > newkey-no-password.pem
我正在嘗試在期望腳本中執行此操作,這樣我就不必實際輸入密碼。這是我寫的程式碼:
#!/usr/bin/expect -f set PASSWORD myPassword spawn openssl rsa <newkey.pem > newkey-no-pass.pem expect "Enter pass phrase:" send "$PASSWORD\r" expect eof
這是我在執行腳本時得到的輸出:
[me@mymachine]# ./test.exp spawn openssl rsa <newkey.pem > newkey-no-pass.pem unknown option <newkey.pem rsa [options] <infile >outfile ... all the options for rsa command ...
我嘗試將
<newkey.pem
介於'
or之間"
,但無濟於事。我做錯了什麼,我該如何解決這個問題?
我認為該
spawn
命令不會解析 shell 重定向<
。您可以通過使用以下命令將其傳遞給 shell 來使其工作sh -c
:#!/usr/bin/expect -f set PASSWORD myPassword spawn sh -c "openssl rsa <newkey.pem > newkey-no-pass.pem" expect "Enter pass phrase:" send "$PASSWORD\r" expect eof
這個對我有用:
# expect -f kkf spawn sh -c openssl rsa <newkey.pem > newkey-no-pass.pem Enter pass phrase:myPassword writing RSA key
我用它來提取私鑰並從 pkcs12 文件中刪除密碼:
openssl pkcs12 -in myFile.p12 -nocerts -out myFile.priv.password.pem -passin pass:SomePassword -passout pass:SomeOtherPassword openssl pkcs8 -topk8 -nocrypt -inform pem -in myFile.priv.password.pem -passin pass:SomeOtherPassword -outform pem -out myFile.priv.pem
我的一些猜測是:這應該適合你:
openssl rsa -in newkey.pem -out newkey-no-pass.pem -passin pass:SomePassword
如果您不想在命令行上輸入密碼,可以使用文件(訪問受限):
openssl rsa -in newkey.pem -out newkey-no-pass.pem -passin file:PasswordFile.txt