0

私のアプリケーションは、Spring Remoting 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.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.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>

問題を整理するのを手伝ってください

4

2 に答える 2

1

問題はSpringRemotingではなく、アクセスしているサーバー上の証明書がCAまたは信頼できる証明書によって署名されていないことです。この証明書をキーストアに追加する必要があります。

これを行う方法については、Tomcatの信頼できる証明書への外部サーバーの自己署名証明書の追加を参照してください。

于 2011-08-02T13:21:05.580 に答える
0

この例外は、SSL/HTTPSを使用することを意味します。証明書を確認してください。インストールされていないか無効であるようです

于 2011-08-02T13:00:31.337 に答える