我正在尝试将来自第三方的p7b文件导入到java信任存储区。看起来p7b包含一个根证书和一个公钥。
我正在尝试使用类似于下面的命令来导入它
keytool -importcert -file certs.p7b -keystore dave.jks -storetype JCEKS -trustcacerts
当文件被第三方提交给我时,他们没有告诉我公钥的别名是什么。
我认为如果不知道这些信息就不能导入它,这是正确的吗?
发布于 2020-09-07 15:01:46
这是一个相当古老的问题。但是我刚刚遇到了同样的问题,所以我会把我的所作所为发布出来。
我们有一个来自公共机构的.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密钥库。
https://stackoverflow.com/questions/54445450
复制相似问题