У меня есть проект 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");
Но это не работает.
Кто-нибудь может мне помочь?