openssl:如何在脚本中将pfx转换为pem

问题描述 投票:1回答:1

如果我运行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之外的那些Bag属性字符串,我不知道这是否重要。

那么,如何正确地“创建”具有加密私钥的PEM文件,而不是通过密码短语提示?

openssl certificate pem pfx pkcs#12
1个回答
1
投票

如果您查看openssl pkcs12文档,您将看到:

-passin arg

PKCS#12文件(即输入文件)密码源。有关arg格式的更多信息,请参阅openssl(1)中的PASS PHRASE ARGUMENTS部分。

-passout arg

传递短语源以加密任何输出的私钥。有关arg格式的更多信息,请参阅openssl(1)中的PASS PHRASE ARGUMENTS部分。

您指的是:

通过短语选项

有几个命令接受密码参数,通常分别使用-passin和-passout作为输入和输出密码。这些允许从各种来源获得密码。这两个选项都采用单个参数,其格式如下所述。如果没有给出密码参数并且需要密码,则提示用户输入一个:通常会在关闭回显的情况下从当前终端读取该密码。

请注意,字符编码可能是相关的,请参阅passphrase-encoding(7)。

传:密码

实际密码是密码。由于密码对于实用程序是可见的(例如Unix下的'ps'),因此只应在安全性不重要的情况下使用此表单。 ENV:VAR

从环境变量var获取密码。由于其他进程的环境在某些平台上可见(例如某些Unix操作系统下的ps),因此应谨慎使用此选项。文件路径名:

路径名的第一行是密码。如果为-passin和-passout参数提供了相同的pathname参数,则第一行将用于输入密码,下一行将用于输出密码。 pathname不需要引用常规文件:例如,它可以引用设备或命名管道。 FD:数

从文件描述符编号中读取密码。例如,这可用于通过管道发送数据。标准输入

从标准输入读取密码。

所以把它们放在一起你可以做到:

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”和“-passout”。

© www.soinside.com 2019 - 2024. All rights reserved.