代码之家  ›  专栏  ›  技术社区  ›  yurmix

JavaKyStutyPrimeKEntEnvuts.

  •  1
  • yurmix  · 技术社区  · 6 年前

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

    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
    

    当我看到结果时,它不再是一个privatekeentry,而是一个trustedcertentry:

    keytool -list -v -keystore newkeystore.jks
    ...
    ...
    Your keystore contains 1 entry
    
    Alias name: myalias
    Creation date: Feb 20, 2019
    Entry type: trustedCertEntry
    ...
    ...
    

    我这里缺什么? 我应该只将jk与trustedcertentry一起使用,还是有一种方法可以使它与旧的jk(带有privatekeentry)一样?

    1 回复  |  直到 6 年前
        1
  •  1
  •   yurmix    6 年前

    我最终发现我还必须提供私钥(以及 Roshith 在中提到 link 他提供了)。

    所以我首先创建了一个pfx文件:

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

    然后转换成JK:

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

    唯一我不知道(但对我来说不太重要)的是如何使用别名,所以我使用了一个默认的别名(当我试图指定一个别名时:别名不存在)。这已经讨论过了 here )。