将具有多个证书的 pem 转换为 java 密钥库

里奇

我得到了一个 pem 文件,里面有两个证书。

第一个是证书特定于我的公司(即主题特定于我的公司)。

第二个证书是颁发者的证书。

它看起来像这样......

Bag Attributes
    localKeyID: 01 00 00 00 
    friendlyName: CCAPI Client Certificate
Key Attributes
    X509v3 Key Usage: 10
-----BEGIN RSA PRIVATE KEY-----
<<contents>>
-----END RSA PRIVATE KEY-----
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: CCAPI Client Certificate
    subject=MyCompany CN/OU/O/L/ST/C
    issuer=Issuer CN/OU/O/L/ST/C
-----BEGIN CERTIFICATE-----
<<contents>>
-----END CERTIFICATE-----
Bag Attributes
    localKeyID: 02 00 00 00
    subject=Issuer CN/OU/O/L/ST/C
    issuer=Issuer CN/OU/O/L/ST/C
-----BEGIN CERTIFICATE-----
<<contents>>
-----END CERTIFICATE-----

首先,我想确认几件事。

术语明智说我有一个带有两个证书的 pem 文件是否正确?我如何描述私钥部分?那是我尝试连接的服务器的公钥吗?

其次,我需要使用 keytool 命令创建一个包含证书和发行证书的 java 密钥库文件 (jks)。

有人可以帮助我使用命令来做到这一点。我花了很多时间在谷歌上搜索,但似乎有很多不同的用例让我感到困惑。

提前致谢

奥米克朗

您还没有提到为什么给您这个文件,但从内容来看,我认为它是为了通过 HTTPS 客户端身份验证访问网站/服务。私钥(和证书)用于对服务器进行身份验证。可能需要颁发者证书来完成到服务器上受信任根证书的链(或者可能根本不需要)。

这个文件没有以非常常见的格式编码,它基本上是 OpenSSL 将 PKCS#12 文件写入 PEM 时发生的情况。以下 OpenSSL 命令将生成如下文件:

openssl pkcs12 -in keyStore.p12 -out keyStore.pem -nodes

这会保留 PKCS#12 格式的元数据,如 ID 和友好名称,因此您可以看到私钥和第一个证书属于一起。但这有点奇怪,因为……

  1. 私钥未加密(不再)。
  2. 此格式仅适用于在使用 OpenSSL 库的软件中进行进一步处理,但不适用于 Java 或 Microsoft(IIS、.NET)世界。二进制 PKCS#12 文件可用于所有环境。

您可以使用以下 OpenSSL 命令将其转换回二进制 PKCS#12:

openssl pkcs12 -export -in keyStore.pem -out keyStore.p12

从你这点上有一个标准的PKCS#12文件,您可以用在Java软件直接或者你可以用keytool来JKS / JCEKS转换

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章