2013-02-20 99 views
6

我有一個自定義的SSL工廠,我加載了我自己的信任庫。如何加載資源文件夾(maven)內的密鑰庫?

現在,當我把truststore.jks文件到項目的根文件夾,它適用於以下行:

ks.load(new FileInputStream("/truststore.jks", passphrase); 

但我想我的資源文件夾,這與行家建在我的信任,其中路徑是src/main/resources

然後我做,它不會與下面的行工作:

ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase); 

雖然輸入流存在。我檢查了它。當我做ks.load(...)時它只會失敗。

,我得到的唯一的例外是:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 

這是爲什麼?

問候, 戴夫

+0

有一件事你可以嘗試想到。在您的getResourceAsStream中指定「/truststore.jks」,以便從類路徑的根目錄搜索。 – 2013-02-20 23:09:27

+0

我也試過,沒有運氣...... – 2013-02-20 23:38:32

回答

0

奇怪,現在的工作......

Properties systemProps = System.getProperties(); 
systemProps.put("javax.net.ssl.trustStore", "/truststore.jks"); 
systemProps.put("javax.net.ssl.trustStorePassword", "changeit"); 
System.setProperties(systemProps); 

並更改第二行

systemProps.put("javax.net.ssl.trustStore", "src/main/resources/truststore.jks"); 

任何人都知道這是爲什麼?這個解決方案好嗎?

+4

這隻會在你當地的開發環境中工作。一旦你建立了人工製品,路徑src/main/resources將會失效。 – vegemite4me 2015-10-28 12:02:52

+1

請更新您的原始問題,而不是發佈新問題作爲回答 – 2016-07-02 23:31:16

+0

此解決方案與信任庫是資源無關。你的回答(如前所述)只在開發過程中有效,所以我不工作! – 2017-02-20 11:19:08