2013-10-11 3 views
1

У меня есть java application, который подключается к некоторым веб-службам. Когда я пытаюсь вызвать функцию (ы) веб-службы, я получаю исключение.keystore.jks, который будет использоваться в Java-приложении

Хотя, если я вызываю те же функции (-ы) веб-службы из моего другого web application, который развернут на сервере tomcat 7, он отлично работает.

Единственное отличие состоит в том, что у меня есть файл keystore.jks в домашней папке Tomcat.

Как я могу использовать приложение java в файле keystore.jks, так как я предполагаю, что это причина, по которой мое приложение не работает?

Вот трассировка стека исключения:

2013-10-11 15:24:14.0685 DEBUG main org.apache.axis.enterprise – Mapping Exception to AxisFault 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.ssl.Alerts.getSSLException(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) 
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) 
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) 
    at sun.security.ssl.Handshaker.processLoop(Unknown Source) 
    at sun.security.ssl.Handshaker.process_record(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186) 
    at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) 
    at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 
    at com.tieto.issuing.ws.Issuing.IssuingSoapBindingStub.addCardToStop(IssuingSoapBindingStub.java:2398) 
    at ge.ufc.cscupdator.utils.IssuingWsOperationManager.addCardToStopList(IssuingWsOperationManager.java:74) 
    at ge.ufc.cscupdator.CardStopCauseUpdator.main(CardStopCauseUpdator.java:51) 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

ответ

0

вывезенных certificate из веб-браузера, а затем импортировать его в cacert в "PATH_TO_JAVA"\jdk1.7.0_25\jre\lib\security с keytool

1

Эта ошибка

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

указывает, что клиент получил цепочку сертификатов SSL с сервера, но не смог проверить thi s, используя сертификаты доверия (или root CA). Список якоря доверия по умолчанию хранится в файле хранилища lib/security/cacerts в домашнем каталоге Java.

Чтобы указать другое хранилище доверенного для SSL якоря доверия (в этом случае она называется целевым магазин), вы должны передать эту опцию клиенту:

-Djavax.net.ssl.trustStore=/path/to/trsutstore 

Это доверие магазин должен содержать корневой ЦС сертификат цепочки сертификатов сервера SSL. Фактически keystore.jksмай содержит этот сертификат, но также не может. Я предлагаю вам использовать инструмент keytool с командой -list, чтобы проверить наличие сертификата корневого ЦС.

Смежные вопросы