我正在尝试将第三方的p7b文件导入到Java信任库中。看起来p7b包含一个根证书和一个公共密钥。
我正在尝试使用类似于
的命令将其导入keytool -importcert -file certs.p7b -keystore dave.jks -storetype JCEKS -trustcacerts
当文件由第三方提供给我时,他们没有告诉我公用密钥的别名是什么。
我是否认为我不知道此信息就无法导入?
答案 0 :(得分:0)
这是一个很老的问题。但是我也遇到了同样的问题,所以我将发布所做的事情。
我们从一个公共机构获得了一个.p7b文件,该文件拥有一个必须在我们的系统中接受的证书链。由于它具有证书链,因此无法将其直接导入到p12文件中,因此,首先,我使用openssl
对其进行了检查:
openssl pkcs7 -print_certs -inform der -in file.p7b
此命令提供了别名和base64编码的证书的列表:
subject=LONG CERTIFICATE1 COMMONNAME WITH ESCAPE SEQUENCES
issuer=LONG CERTIFICATE1'S ISSUER COMMONNAME
-----BEGIN CERTIFICATE-----
long base64 string
-----END CERTIFICATE-----
subject=LONG CERTIFICATE2 COMMONNAME WITH ESCAPE SEQUENCES
issuer=LONG CERTIFICATE2'S ISSUER COMMONNAME
-----BEGIN CERTIFICATE-----
long base64 string
-----END CERTIFICATE-----
此列表很长,因为.p7b文件包含多个证书。
下一步是复制-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
之间的所有片段,并将它们存储在扩展名为.pem
的不同文件中:
certificate1.pem
certificate2.pem
...
然后使用长通用名作为别名将它们导入密钥库:
keytool -alias "LONG CERTIFICATE1 COMMONNAME WITH ESCAPE SEQUENCES" -importcert -trustcacerts -file certificate1.pem -keystore trustcerts.p12 -storetype PKCS12
keytool -alias "LONG CERTIFICATE2 COMMONNAME WITH ESCAPE SEQUENCES" -importcert -trustcacerts -file certificate2.pem -keystore trustcerts.p12 -storetype PKCS12
此后,我们有了一个包含所有.p7b证书的pkcs12密钥库。