2014-08-29 22 views
1

如何以編程方式查找我的JVM的默認TrustManager正在使用的java密鑰庫文件?如何找出Java VM實際加載的信任庫文件?

This question是類似的,但答案都是關於哪個keystore文件應該正在使用。我想在我的程序中顯示JVM 已加載的實際密鑰庫文件。

更新:問題:'我爲什麼不知道?答案是我的應用程序運行在我不能控制的客戶環境中,所以我不知道。

更新:問題:'沒有默認密鑰庫,但有一個默認信任庫':我更新了我的問題。我正在嘗試瞭解默認信任庫使用的密鑰庫。

更新:這個問題背後的動力是我想在我的應用程序中展示哪些keystore需要更新。操作應用程序的管理員通常無法確定正在使用的jvm,更不用說正確的密鑰庫了。我想給管理員提供他們需要更新的密鑰庫的線索。是的,我知道管理員應該知道很多關於java和密鑰的事情,他們可能不知道。

+1

爲什麼你不知道?除非你創建並初始化了你自己的'KeyManager',否則它只能是'java.net.ssl.keyStore'系統屬性給出的內容。 – EJP 2014-08-29 06:39:01

+0

@amb參考[this](http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html),但有理由說你現在應該已經配置好了。 – 2014-08-29 07:38:41

+0

@ ankur-singhal KeyStore的Javadoc如何幫助識別密鑰庫?沒有方法可以告訴你內容來自哪裏。 – EJP 2014-08-29 09:44:06

回答

0

如何以編程方式查找我的JVM的默認TrustManager正在使用的java密鑰庫文件?

它由javax.net.ssl.trustManager,如果設置的內容給定,否則它是lib/security/jssecacerts文件中的文件夾JRE如果存在的話,否則它是lib/security/cacerts文件。

這全部在JSSE Reference Guide中指定。

這個問題背後的動力是我想在我的應用程序中展示哪些keystore需要更新。

我不知道你爲什麼認爲Java提供的信任庫文件需要更新,但是你錯了,除非你正在處理自簽名證書,在這種情況下真正的答案是「不要「T」。

+0

此答案有幫助,但仍不回答實際問題。這顯示了它應該使用的文件,而不是告訴它實際加載的文件的方式。 – amb 2014-08-31 19:36:57

+0

要解決這個問題的最後一部分:在這種情況下,是有自簽名證書參與的,但是這個軟件通常在非網絡協議的防火牆內部使用,所以自簽名證書是規範,對或錯它不會這個問題並不重要。 – amb 2014-09-10 10:15:14

相關問題