Не удается подключиться к веб-службе в файле war на сервере с использованием Java и CXF

Я использую Tomcat 6 (встроенный сервер) в myEclipse 10.0 вместе с Apache CXF для приложения веб-служб. Моя проблема в том, что я пытаюсь подключиться к серверу, на котором есть файл war с некоторым служебным кодом. Тем не менее, когда я пытаюсь нажать его через код, я получаю эту ошибку от CXF:

ВНИМАНИЕ: Перехватчик выдал исключение, разматывая сейчас org.apache.cxf.interceptor.Fault: Не удалось отправить сообщение.

а затем эта ошибка, которая кажется основной проблемой:

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

Я использовал InstallCert.java, чтобы поразить сервер, и он дал мне это:

Загрузка KeyStore jssecacerts... Открытие соединения с:443... Запуск рукопожатия SSL...

Ошибок нет, сертификат уже доверенный

Я использовал Porticle для просмотра файла cacerts и, конечно же, информация о сервере sha1 и md5 точно соответствовала тому, что было на сервере. Файл cacerts находится в папке java/jre6/lib/security, которая, как я думал, автоматически загружается tomcat при загрузке.

Я также создал папку.bin в качестве другой идеи и поместил ее в каталог webapps для tomcat и изменил серверный XML следующим образом:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="<path on my machine>/webapps/tomcat.bin" keystorePass="changeit" />

Я нашел несколько статей, в которых показано, как загрузить сертификат в хранилище ключей, но это, похоже, не проблема, хотя это общее решение для этой ошибки. Есть что-то, что я пропускаю или может быть другая причина, почему я получаю эту ошибку?

1 ответ

Решение

Оказалось, что у myEclipse есть свой собственный jre, запускающий собственный файл cacerts по умолчанию. На моей машине это было здесь: C:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\lib\security.

Я использовал ProcessExplorer для просмотра процесса javaw.exe, а затем сделал Find (управляющая клавиша + клавиша F), и он показал дополнительную загруженную jre. Я скопировал правильные cacerts в этот каталог, перезапустил все, и это сработало!

Другие вопросы по тегам