我已经在 WSO2 ESB 中公开了 Identity Server UserProfileMgtService adminService。问题是,当我使用 tryIt
功能测试服务时,出现 SSL 异常。当我通过 SOAP UI 调用 ESB 中的服务时也会发生这种情况。
这是异常(exception):
[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 和 client-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 传输发送方配置中将 set 参数设置为 AllowAll,并且还将 HideAdminServiceWSDLs 设置为 false。
我可以通过浏览器访问 localhost:9447/services/UserProfileMgtService?wsdl,但是如果我在 ESB 的publishWsdl 选项中提供它,它会说它无法连接到该服务。如果我将其定义为自定义代理,它将引发上面给出的异常。
在 SOAP UI 中,我给出了 ESB 中代理服务的 WSDL,该服务只有 mediate() 方法,我猜这是因为 ESB 无法连接到端点 wsdl。
最佳答案
您可以定义一个代理,如 this并执行它。
要访问管理服务的 WSDL,您需要将carbon.xml 中的“HideAdminServiceWSDLs”参数设置为“true”。然后您可以简单地创建一个soapui项目来查找确切的SOAP请求格式。
关于wso2 ESB 和 IS 管理服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426294/