期望脚本:删除私钥上的密码

期望脚本:删除私钥上的密码

我正在尝试删除私钥上的密码。手动操作很简单,我运行此命令并输入密码: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之间,但无济于事。'"

我做错了什么以及如何解决这个问题?

答案1

我认为该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

答案2

我用它来提取私钥并从 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

相关内容