2012-07-28 314 views
5

如何將.jks文件導入java安全性的信任庫?我看到的所有教程都使用「.crt」文件。但是,我只有「.jks」文件,它也是我使用keytool命令生成的密鑰庫。如何在java信任庫中導入jks證書

目前,我正在關注this tutorial

我能夠生成Java密鑰庫和密鑰對,併爲基於本教程的現有Java密鑰庫生成證書籤名請求(CSR)。但是我無法將根或中級CA證書導入到現有的Java密鑰庫中,並將已簽名的主證書導入到現有的Java密鑰庫中,因爲它正在查找「.cert」文件。

我錯過了教程中列出的步驟嗎?如果我擁有的唯一文件是「.jks」文件,我如何信任證書?什麼是「.csr」文件的用法?

請注意我正在使用Windows。

+0

你能指出你想達到什麼嗎?你想建立一個服務器嗎?或者你是否嘗試使用客戶端身份驗證?或兩者?您是否在客戶端和/或服務器上使用特定的框架? – 2012-07-28 11:02:35

+0

我沒有使用任何框架。我正在嘗試執行服務器身份驗證。我需要驗證,如果我連接的服務器在給定證書的情況下是合法的。 – Arci 2012-07-28 11:27:51

+0

所以你有一個客戶端,沒有服務器,你有一個'.jks' keystore可以使用?如果您只是客戶端,並且您沒有使用客戶端身份驗證,那麼您不需要生成密鑰對。 – 2012-07-28 11:33:17

回答

10

".jks"信任庫,或者至少它應該是如果您將它分配給JSSE。您應該將證書從您的CA添加到該文件。然後軟件將通過遍歷證書來查找證書鏈。私鑰應保留在(密碼保護)".jks"文件中。

換句話說,您應該導入證書到".jks"不導出證書。如果您的證書申請的回覆中未包含您的證書,您可能需要單獨下載您的特定供應商的證書。你可能會從你最喜歡的瀏覽器中導出它們。通常這些以X5.09 DER格式存儲(應該與Java keytool兼容)。

步驟(一般):

  1. 生成密鑰對&證書請求,存儲到新的或現有的密鑰存儲區(.jks
  2. 將證書發送請求進行簽名,獲得鏈開始與您請求的證書
  3. 將證書鏈導入帶有私鑰的密鑰存儲區
  4. 爲需要驗證的一方生成新密鑰或使用現有的密鑰存儲區(當我們至少有一個或多個客戶端時並導入證書鏈
  5. 在上述密鑰庫中的證書鏈中信任證書,可能是最上面的證書(「根」證書)。
  6. 配置和測試各方,例如一個服務器使用具有私鑰的密鑰存儲和使用後者密鑰存儲的多個客戶。
+0

這是一般答案,如果你想要更多的細節或細節,請指出,因爲我不能提供什麼額外的信息,我可以提供沒有進一步的細節。 – 2012-07-28 10:36:42

+0

謝謝你清除!我曾經認爲通過在密鑰庫中添加證書意味着您實際上在JVM內部添加了證書,而不僅僅是一個密鑰庫文件。您可以教我如何設置Java以使用HttpsURLConnection而不將其設置爲信任所有證書時將Java設置爲信任自簽名證書? – Arci 2012-07-28 10:50:42

+0

不是,但我不必。通常情況下,您將配置Java應用程序以通過別名使用特定的密鑰。 Java只會接受這個別名,如果它能夠找到整個證書鏈,但是對於自簽名證書,鏈將長度爲1。您只需要信任證書*在另一個終點*,而您沒有私鑰。例如。當創建一個連接時,客戶端會試着看看它是否可以建立一個連鎖到一個在特定時間有效的可信證書。爲此,您需要附加到或創建密鑰庫,並導入並信任自簽名證書。 – 2012-07-28 11:01:01