Ошибка JavaLite Ошибка URL-адреса при запросе HTTPS RESTful

Я использую реализацию JavaLite, и при запросе HTTP-сервисов все работает нормально, но при попытке получить данные из HTTPS-версии сервиса я получаю HttpException «Failed URL»

Вот мой код:

Get get = Http.get(url + "/eds/api/v1/certificados");
get.header("Authorization", "Basic " + Credentials);
get.header("APIKey", APIKey);
get.header("Accept", "application/json");

System.out.println(get.text());

Также пробовал с

String test = Http.get(url + "/eds/api/v1/certificados").header("Authorization", "Basic " + Credentials).header("APIKey", APIKey).header("Accept", "application/json").text();

Оба они ведут себя одинаково, если URL-адрес HTTP, я могу получить данные, если URL-адрес HTTPS перехватить "Failed URL". Я протестировал службу REST с SOAPui, и сервер HTTPS работает нормально.

Любое предложение, чего мне не хватает при попытке отправить GET по HTTPS с заголовками?

Заранее спасибо. Луис


person Luis Gonzalez    schedule 23.03.2018    source источник
comment
Вам необходимо провести дополнительные исследования: 1. Предоставьте полную трассировку стека, 2. Попробуйте то же самое с простой Java. У меня такое чувство, что у вас проблема с сертификатом.   -  person ipolevoy    schedule 23.03.2018
comment
Спасибо, Игорь, это правда, когда я пытаюсь использовать curl, мне нужно использовать параметр --insecure для переопределения сертификатов, как я могу сделать то же самое с JavaLite?   -  person Luis Gonzalez    schedule 23.03.2018
comment
Я нашел этот код из stackoverflow.com/questions/2893819/, и он работает как шарм, по крайней мере, для того, что мне нужно   -  person Luis Gonzalez    schedule 23.03.2018


Ответы (1)


Я собирался предположить, что цифровой сертификат сайта не был подписан центром сертификации, который содержится в хранилище сертификатов Java JRE.

Вот что можно сделать:

  1. Используйте браузер и исследуйте сертификат сайта, включая цепочку сертификатов, вплоть до корневого центра сертификации.
  2. Узнайте, какие сертификаты CA установлены локально.

Файл для Java:

$JAVA_HOME/jre/lib/security/cacerts

вам нужно запустить эту команду:

keytool  -list -keystore cacerts

Когда будет предложено ввести пароль, просто нажмите Enter.

Если вы не видите сертификат ЦС, который использовался для подписания сертификата вашего сайта, то у вас будет эта ошибка.

Как исправить:

  1. Используйте хорошо известный центр сертификации, чтобы получить сертификат для своего сайта и убедиться, что он уже присутствует в вашей базе данных сертификатов Java.

or:

  1. Получите сертификат с сайта с помощью браузера и импортируйте его в локальную базу данных Java с помощью команды:

    keytool -importcert ...

Для получения дополнительной информации о программе keytool:

 keytool --help
person ipolevoy    schedule 23.03.2018