我的客户端从Go Daddy向我发送了三个文件(86f8ac00fcd77994.crt、86f8ac 00fcd77 994.pem和gd_bundle-g2-g1.crt(。我需要从这些文件创建一个jks密钥库。有可能吗?谢谢
PD:对不起我的英语!
是的,但您不想。
Java使用密钥库文件,如JKS和内存中的KeyStore
对象,来存储两种(或三种(不同的类型的信息,但许多人不准确地将它们都称为证书,并且不理解其中巨大而关键的区别。具体来说(并更改javadoc中的顺序(:
-
TrustedCertificate条目包含";[一]证书。。。属于另一方。。。。这种类型的条目可用于对其他方进行身份验证">
-
PrivateKey条目包含私钥加上证书CHAIN";由给定实体用于自我认证";。
-
为了完整性,一些密钥库可以包含SecretKey条目,但JKS不能,而且即使有,这种功能也很少使用。
您拥有的文件都是证书(一个在十六进制命名的文件中,几个在捆绑文件中(,而不是私钥。您可以将它们中的每一个导入到TrustedCert条目中,但Trusted cert条目仅用于验证通信的另一端——即,当您连接到服务器时,TrustedCert条目用于验证该服务器的证书,如果您接受来自客户端的连接并请求客户端身份验证(这不是默认情况,也很少见(,TrustedCert条目用于验证该客户端的证书。但是,由于此证书是由GoDaddy颁发的,如果与您通信的服务器或客户端正确使用了它(及其链(,则您不需要任何TrustedCert条目,因为它针对Java默认信任库中已经存在的根进行验证。
如果您想使用此证书对"您自己"(即您的系统(进行身份验证,例如,如果您想运行由此证书标识的TLS服务器(可能但不一定是HTTPSweb服务器(,则需要PrivateKey条目,而不是任何TrustedCert条目,并且您无法创建PrivateKey条目的,因为您没有私钥。从GoDaddy获得此证书的人确实拥有私钥,因为证书请求过程需要私钥,所以他们可以运行服务器,但他们没有给你私钥,所以你不能。
因此,你问的问题——你能把这些证书放在JKS里吗——的答案是肯定的,你能。但这完全是浪费时间,因为由此产生的JKS不能用于任何用途,而且毫无价值。