Я работаю в среде Websphere Application Server 8.5 и пытаюсь интегрировать новый веб-сервис, который использует протокол HTTPS. Учтите, что первая интеграция была сделана при вызове службы по протоколу HTTP, и поэтому я изменил код, чтобы управлять связью с помощью SSL. Здесь ниже вы можете увидеть код, управляющий подключением к этой службе, но в данный момент я получаю сообщение об ошибке во время доверия сертификата. Я уже проверил, что в WAS TreustStore установлен правильный сертификат.
КОД:
GenericResponse response = null;
AdaptiveAuthentication service = new AdaptiveAuthentication();
AdaptiveAuthenticationInterface serviceInterface = service.getAdaptiveAuthentication();
BindingProvider bindingProvider = ((BindingProvider) serviceInterface);
Map<String, Object> requestCtx = bindingProvider.getRequestContext();
requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint);
Client client = ClientProxy.getClient(serviceInterface);
HTTPConduit http = (HTTPConduit) client.getConduit();
TLSClientParameters tls_cp = new TLSClientParameters();
SocketFactory sf = SSLSocketFactory.getDefault();
if( sf instanceof SSLSocketFactory){
tls_cp.setSSLSocketFactory((SSLSocketFactory) sf);
}
tls_cp.setUseHttpsURLConnectionDefaultSslSocketFactory(true);
tls_cp.setTrustManagers(getTrustAllTrustManager());
tls_cp.setSecureRandom(new SecureRandom());
tls_cp.setCipherSuites(Arrays.asList(((SSLSocketFactory) sf).getDefaultCipherSuites()));
tls_cp.setJsseProvider((new com.ibm.security.jgss.IBMJGSSProvider()).getName());
requestCtx.put(JAXWSProperties.SSL_SOCKET_FACTORY,tls_cp.getSSLSocketFactory());
requestCtx.put(com.sun.xml.internal.ws.developer.JAXWSProperties.SSL_SOCKET_FACTORY, tls_cp.getSSLSocketFactory());
http.setTlsClientParameters(tls_cp);
if (type.equals(TMConstants.Type.ANALYZE)) {
response = serviceInterface.analyze((AnalyzeRequest) request);
} else if (type.equals(TMConstants.Type.NOTIFY)) {
response = serviceInterface.notify((NotifyRequest) request);
}
ОШИБКА:
org.apache.cxf.binding.soap.SoapFault: проблема записи модели SAAJ в поток
at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor $ SAAJOutEndingInterceptor.handleMessage (SAAJOutInterceptor.java:221) ~ [cxf-rt-bindings-soap-2.7.3.jar: 2.7.3]
at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor $ SAAJOutEndingInterceptor.handleMessage (SAAJOutInterceptor.java:172) ~ [cxf-rt-bindings-soap-2.7.3.jar: 2.7.3]
в org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:271) ~ [cxf-api-2.7.3.jar: 2.7.3]
в org.apache.cxf.endpoint.ClientImpl.doInvoke (ClientImpl.java:530) [cxf-api-2.7.3.jar: 2.7.3]
в org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:463) [cxf-api-2.7.3.jar: 2.7.3]
в org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:366) [cxf-api-2.7.3.jar: 2.7.3]
в org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:319) [cxf-api-2.7.3.jar: 2.7.3]
в org.apache.cxf.frontend.ClientProxy.invokeSync (ClientProxy.java:96) [cxf-rt-frontend-simple-2.7.3.jar: 2.7.3]
в org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:133) [cxf-rt-frontend-jaxws-2.7.3.jar: 2.7.3]
at com.sun.proxy. $ Proxy1283.analyze (Неизвестный источник) [na: na]
в xx.xxxx.xframe.xxx.common.log.txmon.CallbackHandler.call (CallbackHandler.java:110) [XXX.jar: na]
в xx.xxxx.xframe.xxx.common.log.xxxx.CallbackHandler.call (CallbackHandler.java:33) [XXX.jar: na]
at java.util.concurrent.FutureTask.run (FutureTask.java:274) [na: 1.7.0]
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1157) [na: 1.7.0]
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:627) [na: 1.7.0]
at java.lang.Thread.run (Thread.java:809) [na: 1.7.0]
Вызвано: com.ctc.wstx.exc.WstxIOException: com.ibm.jsse2.util.h: сбой построения пути PKIX: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl не удалось создать действительный CertPath .; Внутренняя причина:
java.security.cert.CertPathValidatorException: сертификат, выданный CN = , O = ., C = IT не является доверенным; Внутренняя причина:
java.security.cert.CertPathValidatorException: ошибка цепочки сертификатов
на com.ctc.wstx.sw.BaseStreamWriter.flush (BaseStreamWriter.java:261) ~ [woodstox-core-asl-4.1.4.jar: 4.1.4]
at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor $ SAAJOutEndingInterceptor.handleMessage (SAAJOutInterceptor.java:213) ~ [cxf-rt-bindings-soap-2.7.3.jar: 2.7.3]
... 15 общих кадров пропущено
Вызвано: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: сбой построения пути PKIX: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl не удалось создать действительный CertPath .; Внутренняя причина:
java.security.cert.CertPathValidatorException: сертификат, выданный CN = , O = , C = IT не является доверенным; Внутренняя причина:
java.security.cert.CertPathValidatorException: ошибка цепочки сертификатов
на com.ibm.jsse2.k.a (k.java:24) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.rc.a (rc.java:19) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.bb.a (bb.java:308) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.bb.a (bb.java:338) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.cb.a (cb.java:558) ~ [na: 7.0 build_20170331]на com.ibm.jsse2.cb.a (cb.java:187) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.bb.t (bb.java:537) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.bb.a (bb.java:530) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.rc.a (rc.java:797) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.rc.h (rc.java:710) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.rc.a (rc.java:815) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.rc.startHandshake (rc.java:408) ~ [na: 7.0 build_20170331]
на com.ibm.net.ssl.www2.protocol.https.c.afterConnect (c.java:142) ~ [na: 7.0 build_20170331]
на com.ibm.net.ssl.www2.protocol.https.d.connect (d.java:4) ~ [na: 7.0 build_20170331]
на sun.net.www.protocol.http.HttpURLConnection.getOutputStream (HttpURLConnection.java:1146) ~ [na: 1.7.0]
на com.ibm.net.ssl.www2.protocol.https.b.getOutputStream (b.java:49) ~ [na: 7.0 build_20170331]
at org.apache.cxf.transport.http.URLConnectionHTTPConduit $ URLConnectionWrappedOutputStream.setupWrappedStream (URLConnectionHTTPConduit.java:170) ~ [cxf-rt-transports-http-2.7.3.jar: 2.7
в org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.handleHeadersTrustCaching (HTTPConduit.java:1282) ~ [cxf-rt-transports-http-2.7.3.jar: 2.7.3]
в org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.onFirstWrite (HTTPConduit.java:1233) ~ [cxf-rt-transports-http-2.7.3.jar: 2.7.3]
at org.apache.cxf.transport.http.URLConnectionHTTPConduit $ URLConnectionWrappedOutputStream.onFirstWrite (URLConnectionHTTPConduit.java:183) ~ [cxf-rt-transports-http-2.7.3.jar: 2.7.3]
в org.apache.cxf.io.AbstractWrappedOutputStream.write (AbstractWrappedOutputStream.java:47) ~ [cxf-api-2.7.3.jar: 2.7.3]
at org.apache.cxf.io.AbstractThresholdOutputStream.unBuffer (AbstractThresholdOutputStream.java:89) ~ [cxf-api-2.7.3.jar: 2.7.3]
at org.apache.cxf.io.AbstractThresholdOutputStream.write (AbstractThresholdOutputStream.java:63) ~ [cxf-api-2.7.3.jar: 2.7.3]
на com.ctc.wstx.io.UTF8Writer.flush (UTF8Writer.java:100) ~ [woodstox-core-asl-4.1.4.jar: 4.1.4]
на com.ctc.wstx.sw.BufferingXmlWriter.flush (BufferingXmlWriter.java:225) ~ [woodstox-core-asl-4.1.4.jar: 4.1.4]
на com.ctc.wstx.sw.BaseStreamWriter.flush (BaseStreamWriter.java:259) ~ [woodstox-core-asl-4.1.4.jar: 4.1.4]
... 16 общих кадров опущено
Вызвано: com.ibm.jsse2.util.h: не удалось создать путь PKIX: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl не удалось создать действительный CertPath .; Внутренняя причина:
java.security.cert.CertPathValidatorException: сертификат, выданный CN = , O = , C = IT не является доверенным; Внутренняя причина:
java.security.cert.CertPathValidatorException: ошибка цепочки сертификатов
на com.ibm.jsse2.util.f.a (f.java:44) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.util.f.b (f.java:123) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.util.e.a (e.java:3) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.zc.a (zc.java:163) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.zc.a (zc.java:130) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.zc.checkServerTrusted (zc.java:40) ~ [na: 7.0 build_20170331]
на com.ibm.jsse2.cb.a (cb.java:453) ~ [na: 7.0 build_20170331]
... 37 общих кадров пропущено
Причина: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl не удалось создать допустимый CertPath.
at com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild (PKIXCertPathBuilderImpl.java:410) ~ [na: 7.0 build_20170331]
at java.security.cert.CertPathBuilder.build (CertPathBuilder.java:256) ~ [na: na]
на com.ibm.jsse2.util.f.a (f.java:99) ~ [na: 7.0 build_20170331]
... пропущено 43 общих кадра
Вызывается: java.security.cert.CertPathValidatorException: сертификат, выданный CN = , O = , C = IT не является доверенным
на com.ibm.security.cert.BasicChecker. (BasicChecker.java:111) ~ [na: 7.0 build_20170331]at com.ibm.security.cert.PKIXCertPathValidatorImpl.engineValidate (PKIXCertPathValidatorImpl.java:176) ~ [na: 7.0 build_20170331]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.myValidator (PKIXCertPathBuilderImpl.java:737) ~ [na: 7.0 build_20170331]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath (PKIXCertPathBuilderImpl.java:649) ~ [na: 7.0 build_20170331]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath (PKIXCertPathBuilderImpl.java:595) ~ [na: 7.0 build_20170331]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath (PKIXCertPathBuilderImpl.java:595) ~ [na: 7.0 build_20170331]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild (PKIXCertPathBuilderImpl.java:356) ~ [na: 7.0 build_20170331]
... пропущено 45 общих кадров
Вызывается: java.security.cert.CertPathValidatorException: ошибка цепочки сертификатов
в com.ibm.security.cert.CertPathUtil.findIssuer (CertPathUtil.java:316) ~ [na: 7.0 build_20170331]
на com.ibm.security.cert.BasicChecker. (BasicChecker.java:108) ~ [na: 7.0 build_20170331]
... 51 общая рамка опущена
Пожалуйста, помогите мне понять, что я делаю неправильно ...
Заранее спасибо