如果我运行openssl pkcs12 -in cert.pfx -out cert.pem -password pass:mypass
,可以成功将PFX转换为PEM。我将被提示输入PEM密码,以便在.pem文件中加密私钥。
但是,在脚本中,如何自动输入PEM密码?我尝试使用-passin参数,但没有效果。
我猜想,如果我分别加入PEM证书和PEM密钥(不是来自PFX),那将等同于从PFX转换为PEM,但是来自PFX的PEM文件具有外面的那些袋子属性base64字符串和我不知道这是否重要。
因此,如何使用加密的私钥正确"创建" PEM文件,而不会提示形式密码?
如果您查看openssl pkcs12文档,您将看到:
-passin arg
PKCS#12文件(即输入文件)密码源。有关ARG格式的更多信息,请参见通过短语参数openssl(1)。
中的部分- 超越arg
传递短语源以加密使用任何输出的私钥。有关ARG格式的更多信息,请参见通过短语参数openssl(1)。
中的部分
哪个指向您:
通过短语选项
几个命令接受密码参数,通常使用-Passin并分别用于输入和输出密码。这些允许从各种来源获得的密码。这两个选项以下面描述其格式的单个参数。如果不给出密码参数并需要密码,然后用户为提示输入一个:通常会从当前读取终端回声关闭。
请注意,字符编码可能相关,请参阅密码编码(7)。
通过:密码
实际密码是密码。由于公用事业可见密码(例如Unix下的'PS'),该表格仅应在安全并不重要。env:var
从环境变量var中获取密码。由于在某些平台上可以看到其他过程的环境(例如PS在某些Unix OS下)应谨慎使用此选项。文件:路径名
路径名的第一行是密码。如果将相同的路径名参数提供给-Passin和-passout参数,则第一个行将用于输入密码,下一行将用于输出密码。路径名不必参考常规文件:它可以例如,请参阅设备或命名管道。FD:数字
从文件描述符编号中读取密码。例如,这可以用来通过管道发送数据。stdin
从标准输入中读取密码。
为了将其全部结合在一起:
openssl pkcs12 -in cert.pfx -out cert.pem -passin pass:mypass -passout: pass:mypass
为什么-Password不适合您:
-password arg
使用-Export,-password等于-Passout。否则,-Password等于-Passin。
因此,既然您不使用" -Export"它的作用与" -passin"相同。选项。由于这种行为,我喜欢明确使用" -passin"。和" - 超速"而是。