Почему мне нужно импортировать сертификаты сервера в Java

java ssl

297 просмотра

2 ответа

Мы разработали консольное приложение, которое будет доставлять данные из ESB ( https://esb.mkcl.org/ ), который находится на HTTPS. Когда я захожу на этот сайт, я получаю javax.net.ssl.SSLPeerUnverifiedException: peer not authenticatedисключение. Я изменил URL-адрес на https://netbanking.hdfcbank.com/netbanking/, который также находится на HTTPS, и после нанесения удара я НЕ получил никаких исключений.

После некоторых поисков я узнал, что мне нужно импортировать публичный сертификат в хранилище ключей Java, т.е. в cacerts (C: \ Program Files \ Java \ jre6 \ lib \ security). Поэтому я экспортировал сертификат https://esb.mkcl.org/ из браузера и импортировал в java, используя keytoolи затем запустив консольное приложение, и оно работает !! исключений не произошло.

Итак, вопрос в том, почему мне нужно импортировать сертификат для этого частичного URL-адреса (где, как и другие HTTPS-URL-адреса, работают без импорта какого-либо сертификата в Java)?

Автор: Amogh Источник Размещён: 08.11.2019 11:01

Ответы (2)


3 плюса

Решение

Корневой сертификат, используемый сертификатом этого сервера (COMODO RSA Certification Authority), был добавлен в Java в обновлении 51 для Java 8, поэтому это означает, что используемая вами версия java (java6 из вашего пути jre) слишком старая, чтобы уже включать ее.

Чтобы этот сертификат был доверенным по умолчанию, обновите его до версии java.

И, кстати, конфигурация ssl для этого сервера довольно небезопасна.

Автор: mata Размещён: 20.08.2016 07:48

2 плюса

Реализация SSL на стороне клиента опирается на набор известных «доверенных корневых сертификатов». Это сертификаты для центров сертификации SSL, которые, как известно, являются доверенными / заслуживающими доверия.

Проблема заключается в том, что набор доверенных сертификатов в хранилище ключей, который распространяется в вашем Java JDK / JRE, (обычно) меньше, чем набор в типичном веб-браузере.

Есть причины для этого. Например:

  • «Серверная» установка Java, вероятно, должна быть более консервативной в отношении того, кому доверять по умолчанию ... по соображениям безопасности.
  • Возможно, вы используете более старую (т.е. не обслуживаемую) версию Java. Очевидно, что Oracle не будет обновлять хранилище ключей новыми доверенными сертификатами.

Некоторые JRE могут использовать либо хранилище ключей по умолчанию для ОС хоста, либо хранилище ключей браузера.

Автор: Stephen C Размещён: 20.08.2016 07:44
Вопросы из категории :
32x32