我有一个自定义SSL工厂,可以在其中加载自己的信任库。

现在,当我将truststore.jks文件放入项目根文件夹时,它可以在以下行中使用:

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

但是我想将我的信任库放在我的资源文件夹中,该文件夹是使用maven构建的,其路径为 src/main/resources

然后我这样做了,它不适用于以下行:
ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase);

尽管输入流存在。我检查了它只有在我执行ks.load(...)时才会失败。

我得到的异常(exception)是:
 java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

这是为什么?

问候,
戴夫

最佳答案

奇怪了,现在可以用了...

我有

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

有人知道为什么吗?这个解决方案可以吗?

10-04 13:18