我需要将cacerts文件的路径设置为trustStore,要做到这一点:
String keystore = "src/main/resources/cacerts";
System.setProperty("javax.net.ssl.trustStore", keystore);
我想通过STS IDE(春季启动)运行项目,但是它可以工作,但是当我生成.war文件并从错误中运行它时,因为它找不到cacerts文件的路径,我该如何设置要与.WAR一起使用的文件?
我还试图在运行java -jar时删除System.setProperty并设置cacerts,但它也无法正常工作:
java -Djavax.net.ssl.trustStore=./cacerts -jar target/uaa-0.0.1-SNAPSHOT.war
答案 0 :(得分:0)
.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());