簡體   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