2013-10-30 60 views
2

爲了某些簽名目的,我必須訪問Windows證書存儲區以訪問證書。 目前我使用下面的方法來訪問密鑰庫:在JDK 1.4中使用WINDOWS-MY密鑰存儲庫

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

這正常工作與JDK1.6和滿足我的所有要求。但是,由於「不可避免的配置和遺留問題」(讓我們不必擔心),我必須移植代碼才能在編譯時兼容JDK 1.4。 我現在面臨上1.4運行它的問題是它是不是能找到Windows-MY密鑰庫:

java.security.KeyStoreException: Windows-MY not found 

我認爲,當同時在1.4上編譯運行JRE1.6它應該運行正常。不過,任何人都可以確認這個KeyStore的東西是否只是一個運行時依賴? 另外,是否有任何其他第三方提供商可以使用它爲JDK1.4級別的WINDOWS-MY KeyStore提供支持?

+0

它是否必須來自Windows密鑰庫?你可以創建它的副本並將其作爲JKS或PKCS12文件存儲並使用它? – gtrig

+0

沒有。事情就是這樣。由於某些原因,JKS/PKCS12商店是我們排除的選項。它必須來自Windows密鑰庫。 – i5h4n

回答

2

從某種意義上說,它是運行時依賴關係,即密鑰庫實現在Java加密提供程序中。提供者本身僅存在於.jar文件中。然而有一個問題:供應商需要簽名,他們需要簽署正確的運行時間。從1.5開始,相同的簽名對於以後的運行時間似乎還可以,但1.4對於這種情況肯定不是這樣。

對Windows密鑰庫的支持是比較新的。我在1.6之前沒有聽說過它。創建一個能夠在1.4中做到這一點的提供商是非常棘手的,所以我不會屏住呼吸。從開發的角度來看,這將是無限輕鬆的,用Windows特有的替代簽名過程,這是肯定的。