Установить доверенное хранилище программно - PullRequest
0 голосов
/ 25 января 2019

Я хотел бы установить пользовательское хранилище доверенных сертификатов для своего приложения. Я хотел бы использовать System.setProperty (). Установить в tomcat не вариант.

Все конфигурации кажутся хорошими, но это не работает. Я использую Spring boot 2.0.6, с внешним tomcat.

Я пробовал настраивать разные места, как в Postconstruct Бина, прямо перед SpringApplication.run. Вот мой самый последний код:

 static {
    System.setProperty("javax.net.debug", "all");
    System.setProperty("javax.net.ssl.trustStore", "/opt/grtc8/profiles/appconf/insurance/https-trust.p12"); 
    System.setProperty("javax.net.ssl.trustStorePassword", "xys");
    System.setProperty("javax.net.ssl.trustStoreType", "PKCS12");
 }

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(InsuranceCalculatorApplication.class);
}

public static void main(String[] args){

    SpringApplication.run(InsuranceCalculatorApplication.class, args);
}

У меня есть определенное исключение, похоже, что он не читает файл или что-то в этом роде.

Я использую Tomcat 8.5.

1 Ответ

0 голосов
/ 25 января 2019

Установка системных свойств в вашем Java-коде - довольно сомнительная практика.Проблема заключается в том, что это произойдет только в том случае, если вы сможете убедиться, что код, который устанавливает свойства, (всегда) выполняется до кода, который использует свойства.

В этом случае свойстваиспользуется при инициализации поставщика SSL.Скорее всего, это вызвано некоторой статической инициализацией, которая происходит до вашего статического блока.

Существует несколько способов справиться с этим:

  1. Задайте свойства из командной строки, используя опции -D.В зависимости от ваших требований, вы можете сделать немного «волшебства времени запуска», чтобы выбрать хранилище доверия;например, с помощью скрипта-обертки или специального приложения запуска.

  2. Загрузка хранилища доверенных сертификатов по умолчанию и т. д. для вашей JVM в коде Java, а не использование свойств.Например: Загрузить хранилище доверенных сертификатов java во время выполнения - после запуска jvm? .

    Получить такой подход для работы с Tomcat может быть сложно ... при условии, что вы хотите сделать это дляСерверная часть Tomcat.

  3. По-видимому, можно заменить соединитель Tomcat по умолчанию, если вы используете SpringBoot;см. Spring Boot - заменить встроенный по умолчанию разъем Tomcat .Это может дать вам «путь внутрь».

Но я думаю, что прагматическое решение - первое.Изменить правила: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...