将.pk8文件转换为.key文件

12
我有一个.pk8文件,想将其转换为.key文件格式,这样我就可以将它们移动到pkcs12存储中,然后使用keytool将其导入Java密钥库中。
请提供可能的解决方案?
2个回答

10

使用OpenSSL命令行工具先将您的PKCS#8文件转换为普通私钥:

openssl pkcs8 -in file.pk8 -out key.pem

如果出现错误,可能是因为密钥采用DER格式,请尝试以下操作:

openssl pkcs8 -in file.pk8 -inform DER -out key.pem

收集您希望包含在PKCS#12密钥库中的证书,并确保它们已经PEM编码(在文本编辑器中打开文件-如果文件以“----- BEGIN X.509 CERTIFICATE -----”或类似的内容开头,则可以开始操作):

openssl x509 -in single_cert.cer -inform DER -out single_cert.pem

打开文本编辑器,将所有PEM编码的证书加上 key.pem 的内容依次粘贴到同一个文件中,以获得如下所示的文件:

----- BEGIN RSA PRIVATEKEY ----- '' or another format, depends on your key
...contents of your key file
----- END RSA PRIVATEKEY -----
----- BEGIN X.509 CERTIFICATE -----
...contents of certificate 1
----- END X.509 CERTIFICATE -----
----- BEGIN X.509 CERTIFICATE -----
...contents of certificate 2
----- END X.509 CERTIFICATE -----
...

将此保存为all.pem。要最终创建PKCS#12密钥库,请执行此命令:

openssl pkcs12 -export -in all.pem -out file.p12 -name "somename"

提供一个密码即可完成。 name 参数将成为您在Java世界中的“别名”。


我在执行第一个pk8到pem转换例程时遇到以下错误。错误-> 错误读取密钥,期望加密私钥... pkcs8中的错误 - neeraj
4
似乎PKCS#8密钥未加密 - 可尝试添加“-nocrypt”参数。 - emboss
通过第二行命令 "openssl pkcs8 -in file.pk8 -inform DER -out key.pem",我遇到了以下错误:Error->Error reading key asn1 encoding routines:ASN1_CHECK_TLEN :wrong tag,ASN1_ITEM_EX_D2I ,ASN1_TEMPLETE_NOEXP_D2I error in pkcs8。 - neeraj
6
尝试运行 openssl pkcs8 -in file.pk8 -nocrypt -out key.pem 或者 openssl pkcs8 -in file.pk8 -inform DER -nocrypt -out key.pem 命令?这将输出一个 key.pem 文件。 - emboss

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接