2014-12-10 2 views
7

Я работаю над приложением, которое вызывает сторонний веб-сервис через https. Поэтому мне нужно добавить этот сертификат в доверительный магазин моего приложения. Я вижу 3 решения, чтобы исправить мою проблему:Лучшая практика обработки стороннего сертификата SSL в Java

  • добавить этот сертификат $JAVA_HOME/jre/lib/security/cacerts
  • создание пользовательских доверенных сертификатов и запустить мою JVM с -Djavax.net.ssl.trustStore= ...
  • программны загрузить эти доверенные сертификаты при запуске моего приложения

Какое решение вы рекомендуете/препятствуете мне использовать?

ответ

3

Я бы предпочел второй. Потому как;

Для первого; при изменении вашей версии Java вам нужно выполнить дополнительную работу (вы должны снова добавить эти сертификаты ssl в cacerts).

Для третьего; когда вам нужно добавить еще один сертификат ssl. вы должны изменить свой код.

Итак, второй - лучший выбор, потому что; вам не нужно будет менять свой код при появлении нового ssl (вы просто добавите его во внешний trustStore), и вы ничего не сделаете для этих сертификатов при обновлении версии java.

+0

«Если вам нужно добавить еще один сертификат ssl, вы должны изменить свой код», это неверно, вы можете установить хранилище ключей через файл свойств или другой механизм. «второй - лучший выбор», ни правильный, зависит от сложности вашего приложения и от типа приложения, автономного, webapp ... и т. д., возможно, вам нужно использовать несколько хранилищ учетных данных для поддержки отдельного SSL-контекста за каждый индивидуальное целевое взаимодействие, инкапсулирующее каждый контекст в новый объект SSLContext. – vzamanillo

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