猿问

到 javax.net.ssl.trustStore 的 Cacerts 文件路径在

我需要将 cacerts 文件的路径设置为 trustStore,为此我做了:

String keystore = "src/main/resources/cacerts";
System.setProperty("javax.net.ssl.trustStore", keystore);

我想通过 STS IDE(Spring boot)运行该项目,它可以工作,但是当我生成 .war 文件并从错误中运行它时,因为它没有找到 cacerts 文件的路径,我该如何将文件设置为使用.WAR?

我还尝试删除 System.setProperty 并在运行 java -jar 时设置 cacerts 但它也不起作用:

java -Djavax.net.ssl.trustStore=./cacerts -jar target/uaa-0.0.1-SNAPSHOT.war


当年话下
浏览 946回答 1
1回答

一只甜甜圈

.war 文件是单个压缩档案;它的内容不是文件,不能在 javax.net.ssl.trustStore 属性中直接引用。但是,您可以使用Class.getResourceAsStream将证书复制到新文件:Path keystore = Files.createTempFile(null, null);try (InputStream stream = getClass().getResourceAsStream("/cacerts")) {    Files.copy(stream, keystore, StandardCopyOption.REPLACE_EXISTING);}System.setProperty("javax.net.ssl.trustStore", keystore.toString());
随时随地看视频慕课网APP

相关分类

Java
我要回答