使用keytool

时间:2019-01-30 16:42:50

标签: java keytool

我正在尝试将第三方的p7b文件导入到Java信任库中。看起来p7b包含一个根证书和一个公共密钥。

我正在尝试使用类似于

的命令将其导入
keytool -importcert -file certs.p7b -keystore dave.jks -storetype JCEKS -trustcacerts

当文件由第三方提供给我时,他们没有告诉我公用密钥的别名是什么。

我是否认为我不知道此信息就无法导入?

1 个答案:

答案 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密钥库。