我有一个自定义SSL工厂,我加载自己的信任库。
现在,当我将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 :(得分:-3)
奇怪,它现在有效......
我有
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");
任何人都知道为什么?这个解决方案好吗?