我們已經使用Springs HttpInvoker幾個星期了,它的功能就像一個魅力。從我的前端(網絡)應用程序,我連接到後端的userService這樣的:帶有https和未簽名證書的Spring HTTP調用者
<bean id="userService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="http://${backend.host}/backend-ws/remoting/UserService"/>
<property name="serviceInterface" value="com...service.UserService"/>
</bean>
的UserService然後很好地注入到我們的前端類。
現在我們將這部署在適當的(WAS7)服務器上,並且需要使用SSL(https)。於是,我改變(的的serviceUrl)的HTTP到HTTPS但後來我得到:
org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [https://pbp-dev.dev.echonet/public/backend-ws/remoting/ParameterHelper]; nested exception is 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
,因爲在服務器上安裝證書這是有道理的(在哪裏運行)不是由CA簽發的。
我們已經有了一些這方面的經驗,因爲在同一個WAS上有一個web服務正在運行;爲此,我們利用CXF,我們已經產生了JKS文件(密鑰工具)駐留在客戶端應用程序,並設置如下:
<http:conduit name="https://serverurl/.*">
<http:tlsClientParameters secureSocketProtocol="SSL" disableCNCheck="false">
<sec:trustManagers>
<sec:keyStore type="jks" password="pass123" resource="trust.jks"/>
</sec:trustManagers>
</http:tlsClientParameters>
我想對HTTP調用,我們需要做的事情相似,但我們不知道如何在調用者中使用這個trust.jks。
我發現的一件事是使用不同的requestExecutor;像這樣:
<bean id="userService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="https://${backend.host}/backend-ws/remoting/UserService"/>
<property name="serviceInterface" value="com...service.UserService"/>
<property name="httpInvokerRequestExecutor">
<bean class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor" />
</property>
</bean>
這之後我不再拿到證書錯誤,但userService似乎沒有要創建自那以後,我得到:如果混合使用,你可以在這裏找到(HTTP什麼
NoSuchBeanDefinitionException: No matching bean of type [com...service.UserService] found for dependency
願這有助於:http://blog.jayway.com/2008/09/30/spring-remoting-with-security-and-ssl/ – Ralph 2012-01-05 11:51:00
@Ralph, tx,我之前已經看過這個博客,但據我瞭解,它並未完全解決我們的問題(請參閱本博客的最後一篇文章)。 – 2012-01-05 12:36:05