从 CRT 和 PEM 文件创建 JKS

Create JKS from CRT and PEM file

我的客户从 Go-Daddy 向我发送了三个文件(86f8ac00fcd77994.crt、86f8ac00fcd77994.pem 和 gd_bundle-g2-g1.crt)。我需要从这些文件创建一个 jks 密钥库。可能吗?谢谢!

PD:对不起我的英语!

是的,但你不想。

Java 使用 JKS 之类的密钥库文件和内存中的 KeyStore 对象来存储 two (or three) different kinds of information 但许多人不准确地将它们都称为证书并且不理解巨大和关键差异。具体来说(并更改 javadoc 中的顺序):

  • TrustedCertificate 条目包含“[一个] 证书......属于另一方。....这种类型的条目可用于验证其他方。”

  • 一个私钥条目包含一个私钥加上一个证书链“由给定实体用于自我认证”。

  • 为了完整起见,一些密钥库可以包含一个 SecretKey 条目,但 JKS 不能,即使有这些密钥库也很少使用此功能。

您拥有的文件都是证书(一个在十六进制文件中,几个在捆绑文件中),而不是私钥。您可以将它们中的每一个导入到 TrustedCert 条目中,但 TrustedCert 条目仅用于验证通信的 other 端 - 即当您连接到服务器时,使用 TrustedCert 条目验证该服务器的证书,并且如果您接受来自客户端的连接并请求客户端身份验证(这不是默认设置并且很少见),TrustedCert 条目将用于验证该客户端的证书。但是由于此证书是由 GoDaddy 颁发的,如果它被您与之通信的服务器或客户端正确使用(及其链),您不需要任何 TrustedCert 条目,因为它验证已经在 Java 的默认信任库中的根目录。

如果您想使用此证书来验证 'yourself'(即您的系统)——例如,如果您想 运行 TLS 服务器(可能但不一定是 HTTPS web 服务器)由此证书识别——您需要一个 PrivateKey 条目,而不是任何 TrustedCert 条目,并且您不能创建 PrivateKey 条目 因为你没有私钥。从 GoDaddy 获得此证书的人确实有私钥,因为证书申请过程需要它,所以 他们 可以,例如运行 一个服务器,但他们没有给你所以你不能。

因此,对于您提出的问题的答案——您能否将这些证书放入 JKS 中——是的,您可以。但这完全是浪费时间,因为生成的 JKS 不能用于任何事情并且毫无价值。