如何从 .pem 文件将 .p12 密钥添加到 Java Spring?

Posted

技术标签:

【中文标题】如何从 .pem 文件将 .p12 密钥添加到 Java Spring?【英文标题】:How to add .p12 key to Java Spring from .pem file? 【发布时间】:2020-08-19 18:59:51 【问题描述】:

我有这 3 个文件:

certificate.crt certificate.pem certificate.key

certificate.crt 包含:

-----BEGIN CERTIFICATE-----
MIIGmzCCBYOgAwIBAg etc
-----END CERTIFICATE-----

certificate.key 包含:

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCA bla bla
-----END RSA PRIVATE KEY-----

而且 certificate.pem 更复杂,它有:

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgk etc etc
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIGmzCCBYOgAwIBAg etc
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGBjCCA+6gAwIBAgIR...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdzCCBF+gAwIBAgIQ...
-----END CERTIFICATE-----

所以,certificate.pem 包含 1 个私钥(与 certificate.key 不同)和 3 个证书(第一个与 certificate.crt 相同)

使用这些文件,我怎样才能获得一个 .p12 文件以插入到我的 Java Spring 应用程序中?

我已经尝试使用 openssl 将 .pem 文件转换为 .p12 文件,但是当我转到 https//mydomain.com 时,出现了一条不安全的 ssl 消息。

【问题讨论】:

欢迎来到 ***。由于您缩短了密钥/证书(对于真正的密钥来说可以),我无法测试,但我会尝试将此命令与 openssl 一起使用:“openssl pkcs12 -export -in certificate.pem -out clientcertchain.p12”=> 应该生成一个p12 文件“clientcertchain.p12”。 【参考方案1】:

我知道为时已晚,但以防万一,将来有人会需要它。

sudo openssl pkcs12 -export -in certificate.crt -inkey certificate.key -out keystore.p12

请注意,在大多数情况下,证书文件受到保护,并且仅允许 root / sudo 用户进行读取操作。验证做-> ls -al.

-rw----r-- 1 root root 5717 Jun 13 21:49 certificate.crt 使用 root / sudo 权限执行操作或使用 chmod/chown 更改权限。

【讨论】:

以上是关于如何从 .pem 文件将 .p12 密钥添加到 Java Spring?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keytool 中使用 pem 和密钥文件生成 p12 文件

Python p12 到 pem

将Java密钥库转换为PEM格式

如何解决错误“无法加载PEM客户端证书,OpenSSL错误:02001003:系统库:fopen:没有这样的过程”?

使用openssl命令从.p12文件中提取证书和私钥。

关于PEM, DER, CRT, CER,KEY等各类证书与密钥文件后缀的解释