我一直在尝试使用 wso2 esb 配置简单的直通代理,它指向 https 端口中的 REST 服务。
我曾尝试使用我的开发机器 (Windows 7) 做同样的事情并且成功了。
但是当我尝试在生产服务器中重复相同的操作时,在 RHEL 中,我得到 The system cannot infer the transport information
系统日志错误。
尝试过的事情
- 创建指向 https://some.domain.in/something/something 的直通代理服务.
- 尝试过
CURL
至 https://some.domain.in/something/something并正确显示响应 - 将证书从站点导入到 client-truststore.jks。同样在本地完成并且有效。
- 在 axis2.xml 中,编辑了
<parameter name="HostnameVerifier">AllowAll</parameter>
在 https 传输器下
错误信息
- 在
test
中单击时在配置控制台中,我收到以下消息,地址无效
CURL
代理服务 URL,并得到Empty response
检查了系统日志并看到了以下日志
我是不是漏掉了什么?
最佳答案
我可以在 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终于帮了我
关于ssl - 系统无法从 xxxx url 推断传输信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019564/