首页 > 解决方案 > Websphere - SOAP 服务 - 使用默认 SSLSocketFactory 链接证书错误

问题描述

我在 Websphere Application Server 8.5 环境中工作,我正在尝试集成一个使用 HTTPS 协议公开的新 Web 服务。考虑一下,第一次集成是使用 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);
    }

错误:

7.0] 在 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] 在 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.ka(k.java:24) ~[na:7.0 build_20170331] at com.ibm.jsse2.rc.a(rc. java:19) ~[na:7.0 build_20170331] at com.ibm.jsse2.bb.a(bb.java:308) ~[na:7.0 build_20170331] at 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] at com.ibm.jsse2.bb.t(bb.java:537) ~[na:7.0 build_20170331] at 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. 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.fa(f.java:44) ~[na:7.0 build_20170331] at com.ibm.jsse2.util.fb( f.java:123) ~[na:7.0 build_20170331] at com.ibm.jsse2.util.ea(e.java:3) ~[na:7.0 build_20170331] at com.ibm.jsse2.zc.a(zc. java:163) ~[na:7.0 build_20170331] at com.ibm.jsse2.zc.a(zc.java:130) ~[na:7.0 build_20170331] at com.ibm.jsse2.zc.checkServerTrusted(zc.java: 40) ~[na:7.0 build_20170331] at com.ibm.jsse2.cb.a(cb.java:453) ~[na:7.0 build_20170331] ...省略了 37 个常见框架 原因:java.security.cert.CertPathBuilderException : PKIXCertPathBuilderImpl 无法构建有效的 CertPath。在 com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild(PKIXCertPathBuilderImpl.java:, O=, C=IT 在 com.ibm.security.cert.BasicChecker.(BasicChecker.java:111) ~[na:7.0 build_20170331] 在 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] 在 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] at com.ibm.security.cert.BasicChecker.(BasicChecker.java:108) ~[na:7.0 build_20170331] ...省略了 51 个常见框架

请帮助我理解我做错了什么......在此先感谢

标签: javasoaphttpswebsphere

解决方案


推荐阅读