2017-08-02 89 views
0

我想在我自己的服务器之间安全地交换数据,并且这些不会离开内部域。为此,我想:即使密钥库存在,Java Keytool CSR错误

  1. 为keystore生成密钥。

  2. 使用Keytool生成CSR,指定上面的密钥。

  3. 将响应导入我的默认cacerts文件,以便我可以将其作为我的信任库引用。

所以:

  1. 首先我生成使用以下(默认加密算法)密钥对:

keytool -genkeypair -alias mykeys -keystore mykeystore.jks -keypass changeit -storepass changeit -keysize 1024 -noprompt

  • 然后,我使用以下命令创建CSR:
  • keytool -certreq -alias myinternalcert -keystore mykeystore.jks -storepass changeit -file myinternalcert.csr

    它引发以下错误:

    keytool error: java.lang.Exception: Alias <myinternalcert> does not exist

    我试图寻求Oracle的博客例子,看起来这是正确生成CSR的方式 - 但对我来说,这一切都错误:)

    我了解的SSL迄今为止唯一的一点是:

    1. 密钥库 - 我想验证自己到另一个服务器/客户端,我的私钥在我的密钥库中。我也会用它来签署我的证书。

    2. 信任存储 - 这是为了确定我收到的信息是否来自合法来源,即我信任他们。我在这里存储证书。

    回答

    0
    1. 创建CSR和导入您所使用的签名证书时,您需要使用相同的别名当生成密钥对时。
    2. 您应该将签名证书响应导入您的密钥库。不是你的信任存储。您不要信任的签名证书,您拥有它,因此它属于您的密钥库。您的信任库用于其他您信任的证书。
    +0

    因为我在我自己的服务器中使用它(即不暴露于外部服务),我可以使用密钥库'mykeystore.jks'作为我的信任存储?我输入签名证书后?实质上,“我只在我自己的服务器之间交换信息时才信任此证书” – ha9u63ar

    +0

    有充分的理由说明为什么您应始终使用单独的密钥存储和信任存储文件。 – EJP

    相关问题