繁体   English   中英

Java Keytool CSR错误,即使存在密钥库

[英]Java Keytool CSR error even when keystore exists

我想在自己的服务器之间安全地交换数据,并且这些服务器不会离开内部域。 为此,我想:

  1. 为密钥库生成密钥。

  2. 使用Keytool生成CSR,在上方指定密钥。

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

所以:

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

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

  1. 然后,我使用以下命令创建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. 信任库-这用于确定我接收的信息是否来自合法来源,即我是否信任它们。 我在这里存储证书。

  1. 创建CSR并导入生成密钥对时使用的签名证书时,需要使用相同的别名。
  2. 您应该将签名证书响应导入到密钥库中。 不是您的信任库。 您不信任签名证书,而是拥有它,因此它属于您的密钥库 您的信任库用于您信任其他证书。

好-我的错

实际上, alias与为keystore创建的alias相同。 感谢数字海洋上的这篇文章

keytool -certreq -help不会真正打印出清晰的信息:

选项:

 -alias <alias>                  alias name of the entry to process (should have been "Alias of the keystore entry being used")
 -sigalg <sigalg>                signature algorithm name
 -file <filename>                output file name
 -keypass <arg>                  key password
 -keystore <keystore>            keystore name
 -dname <dname>                  distinguished name
 -storepass <arg>                keystore password
 -storetype <storetype>          keystore type
 -providername <providername>    provider name
 -providerclass <providerclass>  provider class name
 -providerarg <arg>              provider argument
 -providerpath <pathlist>        provider classpath
 -v                              verbose output
 -protected                      password through protected mechanism

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM