我的应用程序是一个基于摆动的客户端,使用 spring 远程处理 Http 调用程序与 tomcat 通信,我想转换为 https。
org.springframework.remoting.RemoteAccessException:无法在 [https://localhost:8443/aten_server/metadataservice/MetaDataService-httpinvoker] 访问 HTTP 调用程序远程服务;嵌套异常是 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
在 org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.convertHttpInvokerAccessException(HttpInvokerClientInterceptor.java:212)
在 org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:145)
在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
在 $Proxy4.getMemberStatuses(未知来源)
在 com.kantarmedia.panelmanager.presenters.AbstractPresenter.(AbstractPresenter.java:114)
在 com.kantarmedia.panelmanager.presenters.MainPanelPresenter.(MainPanelPresenter.java:28)
在 com.kantarmedia.panelmanager.PanelManagerFactory.(PanelManagerFactory.java:135)
在 com.kantarmedia.panelmanager.PanelManagerApp.startup(PanelManagerApp.java:32)
在 org.jdesktop.application.Application$1.run(Application.java:171)
在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
在 java.awt.EventQueue.access$000(EventQueue.java:85)
在 java.awt.EventQueue$1.run(EventQueue.java:603)
在 java.awt.EventQueue$1.run(EventQueue.java:601)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:174)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
原因:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1649)
在 com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:241)
在 com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235)
在 com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206)
在 com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)
在 com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
在 com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:632)
在 com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
在 java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
在 java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
在 org.apache.commons.httpclient.methods.EntityEnclosureMethod.writeRequestBody(EntityEnclosureMethod.java:502)
在 org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973)
在 org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
在 org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
在 org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
在 org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
在 org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
在 org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.executePostMethod(CommonsHttpInvokerRequestExecutor.java:196)
在 org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.doExecuteRequest(CommonsHttpInvokerRequestExecutor.java:130)
在 org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor.executeRequest(AbstractHttpInvokerRequestExecutor.java:136)
在 org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:192)
在 org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:174)
在 org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:142)
... 22 更多
原因:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
在 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:323)
在 sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:217)
在 sun.security.validator.Validator.validate(Validator.java:218)
在 com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
在 com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
在 com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
在 com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1185)
... 44 更多
原因:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
在 sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
在 java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
在 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:318)
... 50 更多
我的客户端弹簧配置文件是
<bean id="memberDataServiceHttpInvokerProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="#{systemProperties['aten.protocol']}://#{systemProperties['aten.host']}:#{systemProperties['aten.port']}/aten_server/memberdataservice/MemberDataService-httpinvoker"/>
<property name="serviceInterface" value="com.kantar.server.panel.services.IMemberDataService"/>
<property name="httpInvokerRequestExecutor">
<bean class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor" />
</property>
</bean>
请帮我解决问题