如何在脚本中自动跳过.pfx文件提取证书私钥的密码输入?
问题:自动跳过OpenSSL提取PFX文件时的密码输入
希望在Bash/PowerShell脚本中执行以下两条OpenSSL命令,从KeyVaultcertificate.pfx文件中提取证书和私钥,但这些命令需要输入密码,手动执行时只需按回车即可跳过,请问如何在脚本中实现自动跳过或自动填充密码?
openssl pkcs12 -in KeyVaultcertificate.pfx -clcerts -nokeys -out server.crt openssl pkcs12 -in KeyVaultcertificate.pfx -nocerts -out key.pem -nodes
Bash 脚本实现方式
手动按回车跳过密码说明PFX文件的密码为空,直接用OpenSSL的-passin参数指定空密码即可避免交互:
提取证书
openssl pkcs12 -in KeyVaultcertificate.pfx -clcerts -nokeys -out server.crt -passin pass:
提取私钥
openssl pkcs12 -in KeyVaultcertificate.pfx -nocerts -out key.pem -nodes -passin pass:
如果需要兼容旧版本OpenSSL,也可以用管道传递空输入:
echo "" | openssl pkcs12 -in KeyVaultcertificate.pfx -clcerts -nokeys -out server.crt echo "" | openssl pkcs12 -in KeyVaultcertificate.pfx -nocerts -out key.pem -nodes
PowerShell 脚本实现方式
PowerShell中同样支持-passin参数,或者通过管道传递空字符串:
方法1:使用-passin参数
openssl pkcs12 -in KeyVaultcertificate.pfx -clcerts -nokeys -out server.crt -passin pass: openssl pkcs12 -in KeyVaultcertificate.pfx -nocerts -out key.pem -nodes -passin pass:
方法2:管道传递空输入
Write-Output "" | openssl pkcs12 -in KeyVaultcertificate.pfx -clcerts -nokeys -out server.crt Write-Output "" | openssl pkcs12 -in KeyVaultcertificate.pfx -nocerts -out key.pem -nodes
补充说明
-passin pass: 明确传递空密码,对应手动按回车的操作;提取私钥时的-nodes参数本身会让私钥不加密,所以无需额外处理加密密码环节。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

