JAVA - два клиента Java с SSL-соединением, первый нуждается в сертификате, второй не нуждается в сертификате - PullRequest
0 голосов
/ 10 января 2019

У меня есть проект Java, созданный с помощью myEclipse, Java 1.7. Проект вызывает двух клиентов, которые отправляют запрос Rest на две разные конечные точки веб-служб SSL.

..
public void Example() {
..
CallFirstClient();
CallSecondClient();
..
}

Первый клиент нуждается в сертификате, второй клиент не нуждается в сертификате. Если я выполняю второй клиент один, он работает без сертификата. В первый клиент я загружаю сертификат и он работает:

System.setProperty("javax.net.ssl.trustStore", pathKeyStore);
System.setProperty("javax.net.ssl.trustStorePassword", "password");
System.setProperty("javax.net.ssl.keyStore", pathKeyStore);
System.setProperty("javax.net.ssl.keyStorePassword", "password");   

После выполнения первого клиента (с сертификатом) второй не работает, потому что есть проблема с сертификатом (но это не нужно!).

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели

Я попытался очистить во втором клиенте системные свойства:

System.setProperty("com.sun.net.ssl.checkRevocation", "false");
System.clearProperty("javax.net.ssl.trustStore");
System.clearProperty("javax.net.ssl.trustStorePassword");
System.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStorePassword");

Но это не работает. Кто-нибудь может мне помочь?

1 Ответ

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

РЕШЕНИЕ

Второй клиент разработан с Java 1.6 , который не контролирует сертификат SSL-соединения. Поэтому, когда я выполняю клиент в одиночку без хранилища ключей, он работает!

Мой Java-проект (Пример) разработан с Java 1.7 , который контролирует сертификата. Итак, решение:

  1. загрузка сертификата с сервера - Конечная точка второго клиента (Google Chrome, нажмите на замок, скачать сертификат .cer формат)
  2. добавить сертификат в хранилище ключей
  3. Второй клиент работает
...