我正在尝试将第三方的 p7b 文件导入到 java 信任存储中。看起来 p7b 包含根证书和公钥。
我正在尝试使用类似于的命令导入它
keytool -importcert -file certs.p7b -keystore dave.jks -storetype JCEKS -trustcacerts
Run Code Online (Sandbox Code Playgroud)
当第三方将文件提供给我时,他们没有告诉我公钥的别名是什么。
我是否认为在不知道这些信息的情况下无法导入它?
这是一个相当古老的问题。但我刚刚遇到了同样的问题,所以我将发布我所做的事情。
我们有一个来自公共机构的 .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 密钥库。
| 归档时间: |
|
| 查看次数: |
43726 次 |
| 最近记录: |