簡體   English   中英

使用新證書更新 Java 密鑰庫和信任庫

[英]Updating Java Keystore and Truststores with new Certificates

我們有一個使用雙向 TLSv1.2 驗證的遠程 Java 客戶端應用程序。 這意味着服務器向客戶端進行身份驗證,然后客戶端向服務器進行身份驗證。

這是使用包含來自證書簽名機構的簽名證書的 .jks 文件並使用 SSLSocketFactory 來實現的。

是否可以在當前證書旁邊的相同密鑰庫和信任庫中添加新證書(來自同一機構)?

當前證書過期后,Java 會“故障轉移”到新證書嗎?

如果是這樣,這將允許我們批量推出新的密鑰/信任庫,而不必在單個企業范圍的部署中替換服務器端和客戶端的所有證書。

例如,我們可以使用包含當前和新證書鏈的新存儲更新服務器端。 然后,我們可以在幾天內將存儲擴展部署到包含新證書鏈的客戶端。

一些客戶端與當前鏈握手,一些客戶端與新鏈握手。

SSL 實現是否足夠智能以嘗試商店中可用的所有鏈和/或在當前證書鏈到期的那一天,Java 是否會“故障轉移”以使用新的證書鏈?

下次我們需要用新鏈更新商店時,我們可以從商店中刪除過期的鏈。

可以做您想做的事,但這需要您或維護您的 Java 客戶端的任何人對其進行編程。 存儲您的密鑰的密鑰庫顯然可以包含您希望它包含的盡可能多的密鑰對。 當服務器和您的客戶端之間協商 TLS 時,服務器可以發送它可以接受的證書頒發機構的 DN 列表。 然后您的客戶決定從您的密鑰庫中選擇哪一個。 默認的 Java 實現會檢查服務器發送的 DN 列表,並檢查它們是否與客戶端密鑰庫中證書上的頒發者 DN 匹配。 當找到匹配的證書時,選擇將其發送到服務器進行身份驗證。 如果兩個證書匹配,則優先選擇未過期的證書。 有關更多詳細信息,請參閱JDK-8132108 現在,這是默認行為。 如果你想要更多的控制,你需要實現你自己的 X509KeyManager 並實現你想要的客戶端證書選擇的任何邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM