У меня есть клиентский код, который использует wlsfullclient и развернут на Tomcat.
Этот клиент пытается использовать приложение, развернутое в Weblogic (поиск EJB-компонента по защищенному протоколу t3s ). Проблема в том, что я получаю исключение как это:
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: не удалось построить путь PKIX:
sun.security.provider.certpath.SunCertPathBuilderException: невозможно
найти действительный путь сертификации для запрашиваемой цели; Нет доступного роутера
по назначению
Через некоторое время в режиме отладки при создании соединения я увидел SocketFactory с менеджером доверенных хранилищ. Я пришел к выводу, что доверенное хранилище, которое используется на стороне клиента для проверки сертификата сервера , является стандартным хранилищем доверия Java , и, конечно, у меня нет соответствующего сертификата или CA.
Ранее мой клиент был развернут в Weblogic (A) и использует приложение, развернутое также в Weblogic (B). В этом случае все было в порядке, так как я полагаю, что хранилище доверенных сертификатов, настроенное на Socket Factory, было настроено в Weblogic (A) для проверки сертификата сервера, полученного из хранилища ключей, настроенного в Weblogic (B).
Ниже кода, который выполняет поиск:
public Object lookup(final String resourceName) {
Object res = null;
try {
res = ic.lookup(resourceName);
} catch (NamingException ex) {
throw new RuntimeException(ex);
}
return res;
}
Так что мой вопрос - есть ли способ сообщить моему клиенту, использовать пользовательский SocketFactory с хранилищем доверия, который я хочу предоставить из определенного места? Как я могу это реализовать?
Любые идеи приветствуются ...