Путь к файлу Cacerts к javax.net.ssl.trustStore не работает в .war - PullRequest
0 голосов
/ 11 октября 2018

Мне нужно установить путь к файлу cacerts в trustStore, для этого я сделал:

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

Я хочу запустить проект через STS IDE (Spring boot), он работает, нокогда я генерирую .war-файл и запускаю его из-за ошибки, поскольку он не находит путь к файлу cacerts, как я могу настроить файл для работы с .WAR?

Я также пытался удалить систему.setProperty и установить cacerts во время выполнения java -jar, но он также не работает:

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

1 Ответ

0 голосов
/ 11 октября 2018

.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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...