2013-02-20 8 views
6

私は自分のトラストストアをロードするカスタムSSLファクトリを持っています。リソースフォルダ(maven)の中にあるキーストアをロードする方法は?

今、私はtruststore.jksは、プロジェクトのルートフォルダにファイルを置くとき、それは次の行で動作します:

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

しかし、私はMavenので構築された私のリソースフォルダ、内部の私のトラストストアを望みますパスは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"を指定すると、クラスパスのルートから検索されます。 –

+0

私もそれを試しました、運がない... –

答えて

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"); 

に2つ目の行を変更?このソリューションは大丈夫ですか?

+4

これはあなたのローカル開発環境でのみ動作します。アーチファクトを構築すると、 'src/main/resources'のパスは無効になります。 – vegemite4me

+1

新しい質問を回答として投稿するのではなく、元の質問を更新してください –

+0

このソリューションは、トラストストアがリソースであるという事実とは関係ありません。あなたの答え(私の前に書いたように)は開発中にしか働かないので、うまくいきません! –

関連する問題