如何从pkcs12容器中删除私钥密码?

  1. 我使用Chrome的SSL /导出命令提取证书。
  2. 然后提供它作为openvpn的input – 在openvpn的configuration中:
    pkcs12 "path/to/pkcs12_container"
  3. 当调用openvpn ~/openvp_config它会要求input私钥的密码(我在使用Chrome导出时input的密码):
    Enter Private Key Password:...
  4. 我想删除这个密码请求。

问题:如何从pkcs12中删除私钥的密码?

也就是说,创build不需要密码的pkcs12文件。

(似乎我已经在一年前做了这个,现在忘记了。该死的)

它可以通过各种openssl调用来实现。

  • PASSWORD是你当前的密码
  • YourPKCSFile是您要转换的文件
  • NewPKCSWithoutPassphraseFile是没有密码的PKCS12的目标文件

首先提取证书:

openssl pkcs12 -clcerts -nokeys -in "YourPKCSFile" -out certificate.crt -password pass:PASSWORD -passin pass:PASSWORD

其次,CA密钥:

openssl pkcs12 -cacerts -nokeys -in "YourPKCSFile" -out ca-cert.ca -password pass:PASSWORD -passin pass:PASSWORD

现在,私钥:

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -password pass:PASSWORD -passin pass:PASSWORD -passout pass:TemporaryPassword

现在删除密码:

openssl rsa -in private.key -out "NewKeyFile.key" -passin pass:TemporaryPassword

把新的PKCS文件放在一起:

cat "NewKeyFile.key" > PEM.pem

cat "certificate.crt" >> PEM.pem

cat "ca-cert.ca" >> PEM.pem

并创build新的文件:

openssl pkcs12 -export -nodes -CAfile ca-cert.ca -in PEM.pem -out "NewPKCSWithoutPassphraseFile"

现在你有一个新的PKCS12密钥文件,私钥部分没有密码。

我find的最简单的解决scheme是

导出到临时文件

 openssl pkcs12 -in protected.p12 -nodes -out temp.pem # -> Enter password 

将pem转换回p12

 openssl pkcs12 -export -in temp.pem -out unprotected.p12 # -> Just press [return] twice for no password 

删除临时证书

 rm temp.pem 

这可以轻松地完成一步没有临时文件:

openssl pkcs12 -in "PKCSFile" -nodes | openssl pkcs12 -export -out "PKCSFile-Nopass"

用密码回答“input密码”提示。 用<CR>回答出口Passowrd提示

完成。

请注意,这将处理可能在捆绑中的任意数量的中间证书。

我强烈build议小心处理生成的文件; 首先将umask设置为377(非unix:这意味着只有所有者才能读取创build的文件),这将是一个好主意。我想这是2个步骤,如果您的默认umask是宽容的…

现在,私钥:

 openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -password pass:PASSWORD -passin pass:PASSWORD -passout pass:TemporaryPassword 

现在删除密码:

 openssl rsa -in private.key -out "NewKeyFile.key" -passin pass:TemporaryPassword 

这2个步骤可以被replace

 openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -nodes