系统无法从 xxxx url 推断传输信息

The system cannot infer the transport information from xxxx url

我一直在尝试使用 wso2 esb 配置简单的直通代理,它指向 https 端口中的 REST 服务。

我曾尝试使用我的开发机器 (Windows 7) 做同样的事情并且成功了。

但是当我尝试在生产服务器中重复相同的操作时,在 RHEL 中,系统日志中出现 The system cannot infer the transport information 错误。

尝试过的东西

  1. 已创建指向 https://some.domain.in/something/something 的直通代理服务。
  2. 尝试了 CURLhttps://some.domain.in/something/something 并正确显示响应
  3. 已将证书从站点导入到客户端-truststore.jks。同样在本地完成并且有效。
  4. 在 axis2.xml 中编辑 <parameter name="HostnameVerifier">AllowAll</parameter>在 https transporter

错误信息

  1. 在配置控制台中单击 test 时,我收到以下消息,地址无效

  1. CURL 代理服务 URL, 得到 Empty response

  2. 检查了系统日志,看到了以下日志

我是不是漏掉了什么?

我可以在 wso2-error-logs 中看到以下消息

ERROR {org.apache.synapse.transport.passthru.TargetHandler} -  I/O
error: handshake alert:  unrecognized_name
javax.net.ssl.SSLProtocolException: handshake alert:  unrecognized_name

然后我意识到我在本地使用 java 1.6 但在生产环境中使用 1.7。 在 Java 1.7 中,SSL 处理有一些变化

The JDK 7 release supports
the Server Name Indication (SNI) extension in the JSSE client. SNI,
described in RFC 4366 enables TLS clients to connect to virtual
servers.

为了绕过这个,我在wso2server.sh中添加了JAVA_OPTS="-Djsse.enableSNIExtension=false",然后重新启动。

这解决了我的问题。 虽然不确定这是否是正确的方法

This url终于帮到我了