- 我使用 Chrome 的 SSL/export 命令提取了证书。
- 然后将其作为 openvpn 的输入 - 在 openvpn 的配置中:
pkcs12 "path/to/pkcs12_container"
- 调用时
openvpn ~/openvp_config
它会要求输入私钥密码(我使用 Chrome 导出时输入的):
Enter Private Key Password:...
- 我想删除这个密码请求。
问题:如何从 pkcs12 中删除私钥密码?
也就是说,创建不需要密码的pkcs12文件。
(似乎一年前我就已经以某种方式这样做了,现在却忘了。该死。)
答案1
可以通过各种openssl
调用来实现。
- PASSWORD 是您的当前密码
- YourPKCSFile 是您要转换的文件
- NewPKCSWithoutPassphraseFile 是无密码的 PKCS12 的目标文件
首先,提取证书:
$ openssl pkcs12 -clcerts -nokeys -legacy -in "YourPKCSFile" \
-out certificate.crt -password pass:PASSWORD -passin pass:PASSWORD
二、CA密钥:
$ openssl pkcs12 -cacerts -nokeys -legacy -in "YourPKCSFile" \
-out ca-cert.ca -password pass:PASSWORD -passin pass:PASSWORD
现在,私钥:
$ openssl pkcs12 -nocerts -legacy -in "YourPKCSFile" \
-out private.key -password pass:PASSWORD -passin pass:PASSWORD \
-passout pass:TemporaryPassword
现在删除密码:
$ openssl rsa -legacy -in private.key -out "NewKeyFile.key" \
-passin pass:TemporaryPassword
将新 PKCS 文件的内容放在一起:
$ cat "NewKeyFile.key" \
"certificate.crt" \
"ca-cert.ca" > PEM.pem
并创建新文件:
$ openssl pkcs12 -export -nodes -CAfile ca-cert.ca \
-in PEM.pem -out "NewPKCSWithoutPassphraseFile"
现在您有一个新的 PKCS12 密钥文件,其私钥部分没有密码。
答案2
最简单的解决方案我发现是
导出到临时 pem 文件
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
答案3
无需临时文件,只需一步即可轻松完成:
openssl pkcs12 -in "PKCSFile" -nodes | openssl pkcs12 -export -out "PKCSFile-Nopass"
使用密码回答导入密码提示。使用 <CR> 回答导出密码提示
完毕。
请注意,这将处理捆绑包中可能存在的任意数量的中间证书......
我强烈建议您小心处理生成的文件;最好先将 umask 设置为 377(非 unix:这意味着只有所有者可以读取创建的文件。)如果您的默认 umask 是宽松的,我想那是 2 个步骤...
答案4
我的用例是从 fastlane 的文件中删除密码.p12
。我尝试了此线程中的所有答案,但后来我偶然发现一些博客文章这最终给了我一个有用的答案。