Scripting

期望腳本:刪除私鑰上的密碼

  • January 10, 2018

我正在嘗試刪除私鑰上的密碼。手動操作很簡單,我執行這個命令並輸入密碼: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

引用自:https://unix.stackexchange.com/questions/139110