【问题标题】:Apache http core nio 4.3.3 reverse proxy SSL errorApache http core nio 4.3.3 反向代理 SSL 错误
【发布时间】:2014-12-09 14:03:40
【问题描述】:

我正在使用 http core nio 4.3.3 开发反向代理,需要通过代理连接到 Secure/HTTPS 端点。我采用了反向代理(异步 HTTP 反向代理)[1] 并添加了 SSL 支持,如下所示。

    SSLContext clientSSLContext =
                       SSLUtil.createClientSSLContext(TRUST_STORE_LOCATION,
                                                      TRUST_STORE_PASSWORD);

    final IOEventDispatch connectingEventDispatch =
                                                    new DefaultHttpClientIODispatch(
                                                                                    clientHandler,
                                                                                    clientSSLContext,
                                                                                    ConnectionConfig.DEFAULT);
    ...
    connectingIOReactor.execute(connectingEventDispatch);

当我发送请求时,我收到了这个错误,

java.io.IOException:不支持 SSL

堆栈跟踪如下所示。

[client

我也启用了 SSL 调试日志,但仍然无法找出问题所在。 然后我对此进行了调试,发现代理收到了来自客户端的请求并由于 HttpAsyncRequestConsumer 的句柄方法内部的异常而丢弃。例外是 java.io.IOException: SSL not supported

另请注意,SSLContext 与使用 netty 传输编写的反向代理一起工作正常。

任何帮助将不胜感激。

[1]https://hc.apache.org/httpcomponents-core-ga/examples.html

问候, 拉文德拉。

【问题讨论】:

    标签: ssl nio reverse-proxy apache-httpcomponents


    【解决方案1】:

    在客户端使用连接池来管理传出连接时,需要确保池用于创建新连接对象的连接工厂支持 SSL。请确保连接池配置正确。

    【讨论】:

      【解决方案2】:

      非常感谢您的建议。这样就解决了问题。

              clientSSLContext =
                                 SSLUtil.createClientSSLContext(TRUST_STORE_LOCATION,
                                                                TRUST_STORE_PASSWORD);
              BasicNIOConnFactory connectionFactory =
                                                      new BasicNIOConnFactory(
                                                                              clientSSLContext,
                                                                              null,
                                                                              ConnectionConfig.DEFAULT);
              proxyConnPool = new ProxyConnPool(connectingIOReactor, connectionFactory, 5000)
      

      【讨论】:

      • 嘿,如果你能分享你的完整代码示例,那就太棒了。我一直在尝试修改示例以执行 SSL,但我根本看不出您的代码如何适应。一定有其他的修改,不是吗?无论如何,如果你能,那就太好了。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 2017-07-10
      相关资源
      最近更新 更多