2016-12-13 3 views
0

Мне нужно добавить доверенный сертификат в cacerts, который поставляется с JRE, но у меня нет контроля или владения над установкой JRE моего клиента. Есть ли способ сделать это с помощью API-интерфейсов безопасности, кроме как предполагать местоположение пути к файлу для файла cacerts и прочитать его в пользовательском TrustManager?Java SSL - добавление самозаверяющего сертификата в cacerts программно

ответ

0

Вы можете использовать собственный магазин доверия и определить его в параметрах JVM -D для SSL. Что я всегда делаю в той же корпоративной среде, что и у меня.

+0

Хм .. это на самом деле делает код намного проще! Должен ли я беспокоиться о том, изменится ли файл cacerts в будущих выпусках JRE? Полагаю, мы должны периодически обновлять нашу копию файла сертификатов. – CraigM

+0

Обычно, как правило, никто не использует JRE default key/trust stores. Для фактических сертификатов почти ничего нет. И очень часто используется более одного магазина. Я говорю о серверах приложений или таких контейнерах, как Weblogic, JBoss, Tomcat и т. Д. И приложения, работающие там – Vadim

1

Я не рекомендую устанавливать хранилище доверия глобально для JVM, если только вы не используете автономное приложение Java. Как правило, вы можете настроить SSLContext с необходимым материалом доверия, поддерживающим требуемые сертификаты. Однако имейте в виду, что SSL в Java является одной из наиболее раздражающих частей, поскольку самая маленькая ошибка конфигурации может дать вам некоторые действительно странные сообщения об ошибках.

Раньше у меня была успешная реализация двухсторонней аутентификации SSL (публичные или конфиденциально подписанные сертификаты) с использованием not-yet-commons-ssl, и хотя библиотека немного устарела, ее проще в использовании, чем исходная Java, особенно если вам нужно поддерживать несколько версий JVM.

+0

Согласитесь. Это то, что я хотел бы сказать, но я печатаю по телефону :-( – Vadim

Смежные вопросы