2012-09-14 184 views
2

我公開了WSO2 ESB中的Identity Server UserProfileMgtService adminService。問題是,當我使用tryIt功能來測試服務時,我得到一個SSL異常。當我通過SOAP UI在ESB中調用服務時也會發生這種情況。wso2 ESB和IS admin服務

這是例外:

[2012-09-14 16:32:21,003] ERROR - ClientHandler I/O error : Host name verification failed for host : localhost For : 127.0.0.1:9447 For Request : Axis2Request [Message ID : urn:uuid:d3797d1e-f21d-4b6a-aec9-075e95e982e6] [Status Completed : false] [Status SendingCompleted : true] 
javax.net.ssl.SSLException: Host name verification failed for host : localhost 
     at org.apache.synapse.transport.nhttp.HttpCoreNIOSSLSender$1.verify(HttpCoreNIOSSLSender.java:310) 
     at org.apache.http.impl.nio.reactor.SSLIOSessionHandlerAdaptor.verify(SSLIOSessionHandlerAdaptor.java:52) 
     at org.apache.http.impl.nio.reactor.SSLIOSession.doHandshake(SSLIOSession.java:186) 
     at org.apache.http.impl.nio.reactor.SSLIOSession.outboundTransport(SSLIOSession.java:292) 
     at org.apache.http.impl.nio.SSLClientIOEventDispatch.outputReady(SSLClientIOEventDispatch.java:249) 
     at org.apache.http.impl.nio.reactor.BaseIOReactor.writable(BaseIOReactor.java:179) 
     at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:344) 
     at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:318) 
     at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:278) 
     at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) 
     at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:542) 
     at java.lang.Thread.run(Thread.java:662) 
[2012-09-14 16:32:21,005] WARN - EndpointContext Endpoint : endpoint_b058e35b0fa1f0f58569defe4fb9d4838eadea9b6abd4d36 will be marked SUSPENDED as it failed 
[2012-09-14 16:32:21,006] WARN - EndpointContext Suspending endpoint : endpoint_b058e35b0fa1f0f58569defe4fb9d4838eadea9b6abd4d36 - last suspend duration was : 30000ms and current suspend duration is : 30000ms - Next retry after : Fri Sep 14 16:32:51 EEST 2012 

我使用自簽名的證書,但我已經相應地修改了wso2carbon.jks和客戶truststore.jks使他們有證書與本地主機CN以及我的自簽證書有不同的CN。我正在使用localhost作爲IS端點。什麼會導致這種異常?有沒有一種更簡單的方法來在ESB中映射IS管理服務。

說明性
所有的服務器都有自己簽署的CN證書:ip-xx-xx-xxx-xx.xx.something.com。

我的身份服務器在localhost上運行:9447 /並且我想通過ESB運行的服務是localhost:9447/services/UserProfileMgtService?wsdl。

的ESB是在localhost:9447/

我已經在其中在axis2.xml定義HTTPS傳輸發送者的配置設置設定參數至AllowAll和我還設置HideAdminServiceWSDLs爲false。

我可以通過瀏覽器訪問localhost:9447/services/UserProfileMgtService?wsdl,但是如果我在publishWsdl選項中的ESB中提供它,則表示它無法連接到該服務。如果我將其定義爲自定義代理,則會引發上述異常。

在SOAP UI中,我給ESB中只有mediate()方法的代理服務的WSDL,我猜這是因爲ESB無法連接到端點wsdl。

+1

什麼是服務器證書的CN?這是由於主機名稱和CN – SureshAtt

+0

的不匹配所致。如果這就是您的意思,那麼CN不是本地主機,並且我正在展示像Ratha發佈的示例那樣的服務。所以我想這是問題所在。但我不知道我該如何解決它。使用ESB的truststore中的CN localhost添加另一個證書? – Ivo

回答

3

您可以定義一個像this這樣的代理並執行它。

要訪問管理服務的WSDL,需要在carbon.xml中爲「HideAdminServiceWSDLs」參數設置「true」。然後,您可以簡單地創建一個soapui項目來查找確切的SOAP請求格式。

+0

謝謝!我的代理服務配置是相同的。關於HideAdminServiceWSDL你是否意味着我必須將它設置爲false?由於SOAP UI無法找到確切的請求格式。 – Ivo

+0

oops是的,它應該是假的 – Ratha

+0

我已經跟着博客,並以同樣的方式定義我的代理服務,但它仍然無法正常工作(我甚至已啓用HostNameVerifier爲AllowAll)。 ESB不公開UserProfileMgtService的wsdl,因此SOAP UI無法找到確切的請求格式。這是因爲ESB無法連接到端點?我相信我給出的URL是正確的,因爲我可以通過瀏覽器訪問UserProfileMgtService wsdl。 – Ivo