2012-09-14 143 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