2010-06-02 83 views
5

有誰知道是否可以加載一個KeyStore,以便它只提示輸入給定別名的密碼?加載一個別名的Java KeyStore?

例子:

在我的密鑰存儲我有兩個私鑰:Alice的加密證書和Bob的加密證書。

當我加載我的密鑰存儲:

keyStore = KeyStore.getInstance("Windows-MY", "SunMSCAPI"); 
keyStore.load(null); 

提示我輸入兩個Alice和Bob的密鑰存儲密碼。一旦輸入,我可以使用getKey("Alice's Encryption Certificate", null);來檢索Alice的私鑰。我的密鑰由Entrust的安全提供商保護,在加載密鑰存儲區時是誰提示我輸入密碼。如果我不輸入Bob的密碼並嘗試獲取他的密鑰,它將返回null,這很好,但我想避免密碼提示。

是否有可能以某種方式指定我只希望加載密鑰存儲區之前Alice的密鑰,所以我從來沒有提示Bob的密碼?

謝謝。

+1

hm,你在哪裏詢問兩者的密碼? – Bozho 2010-06-02 16:31:00

+0

我的密鑰由Entrust的安全提供商保護,它提示我輸入兩個密碼。 – 2010-06-02 16:32:44

+0

怎麼樣?你是用代碼(顯示整個相關代碼)還是通過keytool來做到這一點? – Bozho 2010-06-02 16:53:07

回答

3

我們遇到同樣的問題,無法找到解決方法。基本上,你問是否有辦法部分加載密鑰庫。這讓MSCAPI提供程序忽略您提供的任何密碼變得更加複雜。

我們通過僅存儲一個密鑰與MSCAPI密鑰庫來解決問題。事實證明,這對智能卡的安全模型也有更好的效果。

+0

只是愚蠢的是,當你試圖導出私鑰時,它應該提示輸入密碼,而不是隻加載商店。謝謝ZZ,我會把這個問題留待下一天看看有沒有人有答案,如果不是,我會接受你的。 – 2010-06-02 18:47:14

+0

我們遇到了同樣的問題,儘管清除MY密鑰存儲區是不可能的,因爲除了USB令牌之外,其他系統依賴於安裝的靜態證書。我們必須創建一個加載它並刪除其他密鑰的服務。此外,我們找到了一種掛鉤USB事件的方法,並通知插入和移除密鑰,這使我們能夠進一步清理房屋,並減少彈出窗口的數量,雖然我們還沒有完全消除它們。 – Newtopian 2011-03-29 09:52:13