只想問這個問題的「澄清」,而不是一個分辨率時,密鑰工具命令:導入證書或鏈
Java的密鑰工具與-trustcacerts
ARG的-importcert
命令。從官方的幫助指南。
導入來自CA
該認證答覆後您導入認證的 您提交證書籤名請求(該CA的公鑰證書或有 已經這樣一個證書cacerts文件),您可以導入 證書回覆,並將您的自簽名證書替換爲 證書鏈。此鏈是構成由CA在 響應返回到您的請求的一個(當CA答覆是鏈),或一種 (當CA答覆是單個證書)使用已經在 認證答覆和受信任的證書在您導入答覆的密鑰庫中或在cacerts密鑰庫 文件中可用 。
例如,如果您發送您的證書籤名請求,威瑞信, 那麼你可以導入使用以下的答覆,這假設 返回的證書名爲VSMarkJ.cer:
keytool -importcert -trustcacerts -file VSMarkJ.cer
我也看了跟隨着從keytool
文檔:
如果回答是一個X.509證書,密鑰工具學嘗試ts到 建立信任鏈,從證書回覆開始,並在自簽名證書(屬於根CA)結束 。證書 回覆和用於認證 證書回覆的證書層次結構形成了新的證書鏈別名。如果不能建立信任鏈,則不會導入證書回覆。在 這種情況下,密鑰工具不打印出證書並提示 用戶進行驗證,因爲它是非常硬的(如果不是不可能的),用於一個用戶 以確定證書的回覆的真實性。
如果答覆是PKCS#7格式的證書鏈,該鏈是第一 排序(與用戶證書第一和自簽名的根CA 證書最後一個),前密鑰工具試圖根CA 證書匹配在密鑰庫或「cacerts」密鑰庫文件(如果指定了-trustcacerts 選項)中的任何可信證書 的答覆中提供。如果沒有匹配,可以發現,的 根CA證書的信息被打印出來,並且用戶被提示 驗證,例如,通過比較所顯示的證書指紋 與來自一些其他(可信)源獲得的指紋 信息,這可能是根CA本身。用戶然後有中止導入操作的 選項。但是,如果-noprompt選項爲 ,則不會與用戶進行交互。
如果我收到這兩個根CA和我的簽名證書,哪一個是正確的命令對我來說,正確導入證書(或將所有下面工作的基礎上根CA的可用性)的認證答覆:
# Assuming doesn't exist at all
keytool -import -keystore server_keystore.jks -storepass pass -alias rootCA -file ca-cert-file
keytool -import -keystore server_keystore.jks -storepass pass -alias fqdn_name -file signed_server_cert
VS
#Assuming that root CA exists in system-wide cacerts
keytool -import -trustcacerts -keystore server_keystore.jks -storepass pass -alias fqdn_name -file signed_server_cert
與
# Assuming that the root CA doesn't exist
keytool -importcert -keystore java_home\jre\lib\security\cacerts -storepass changeit -alias someRootCA -file root_ca_cert
keytool -importcert -trustcacerts -keystore server_keystore.jks -storepass pass -alias fqdn_name -file signed_server_cert
對不起,任何不正確的假設,只是想與他人:)
問候合作,理解,
當你嘗試時發生了什麼?如果你只有一個文件回覆,#1和#3可能如何相關?他們都使用兩個文件。 – EJP
@EJP好吧我錯過了一個改變 - 現在更新了問題。謝謝。我的信任庫cacerts受到了損壞(我認爲),因爲我在服務器密鑰庫和信任庫中使用了「-trustcacerts」。只是想了解如何不搞亂順序。我使用'openssl s_client'命令來檢查服務器在打印出大量證書信息時的行爲,但沒有實際的數據寫入/讀取測試。 – ha9u63ar