使用 keytool 将 p7b 文件导入到 Java 密钥库

Dav*_*veH 10 java keytool

我正在尝试将第三方的 p7b 文件导入到 java 信任存储中。看起来 p7b 包含根证书和公钥。

我正在尝试使用类似于的命令导入它

keytool -importcert -file certs.p7b -keystore dave.jks -storetype JCEKS -trustcacerts
Run Code Online (Sandbox Code Playgroud)

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

我是否认为在不知道这些信息的情况下无法导入它?

Osc*_*rez 6

这是一个相当古老的问题。但我刚刚遇到了同样的问题,所以我将发布我所做的事情。

我们有一个来自公共机构的 .p7b 文件,其中包含必须在我们的系统中接受的证书链。由于它有一个证书链,因此无法直接导入到 p12 文件中,因此,首先,openssl我检查了它:

 openssl pkcs7 -print_certs -inform der -in file.p7b
Run Code Online (Sandbox Code Playgroud)

此命令给出别名和 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-----
Run Code Online (Sandbox Code Playgroud)

该列表相当长,因为 .p7b 文件包含多个证书。

下一步是复制 和 之间的所有片段,-----BEGIN CERTIFICATE-----并将-----END CERTIFICATE-----它们存储在具有扩展名的不同文件中.pem

certificate1.pem
certificate2.pem
...
Run Code Online (Sandbox Code Playgroud)

然后将它们导入密钥库,使用长公用名作为别名:

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
Run Code Online (Sandbox Code Playgroud)

之后,我们就有了一个包含所有 .p7b 证书的 pkcs12 密钥库。

  • 我执行import commond,系统提示我:不是X.509证书 (2认同)