Java密钥库PrivateKeyEntry与TrustedCertEntry

时间:2018-06-28 21:06:29

标签: security hadoop ssl jks

我正在更新Hadoop集群使用的证书。 当前的JKS有一个条目:

Your keystore contains 1 entry

Alias name: myalias
Creation date: Jan 10, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 1

我正在尝试从新证书创建新的密钥库:

keytool -importcert -alias myalias  -file newcertfile.crt -keystore newkeystore.jks

但是我被问到我是否信任此证书(如果我拒绝,则退出keytool):

Trust this certificate? [no]:  yes

当我查看结果时,它不再是PrivateKeyEntry而是TrustedCertEntry:

keytool -list -v -keystore newkeystore.jks
...
...
Your keystore contains 1 entry

Alias name: myalias
Creation date: Feb 20, 2019
Entry type: trustedCertEntry
...
...

我在这里想念什么? 我应该只将JKS与TrustedCertEntry一起使用,还是有办法使其像旧的JKS(带有PrivateKeyEntry)一样?

1 个答案:

答案 0 :(得分:1)

我最终发现我还必须提供私钥(正如他提供的Roshith中提到的link一样。)

因此,我首先创建了一个pfx文件:

openssl pkcs12 -export -out newcertbundle.pfx -inkey myprivate.key -in newcertfile.crt

然后将其转换为jks:

keytool -importkeystore -srckeystore newcertbundle.pfx -srcstoretype PKCS12 -srcstorepass mypass -deststorepass mypass -destkeypass mypass -destkeystore newkeystore.jks

我唯一不知道(但对我来说不太重要)的是如何使用别名,因此我使用了默认别名(当我尝试指定一个别名时):别名不存在。 here对此进行了讨论。