首页 文章

Apache http核心nio 4.3.3反向代理SSL错误

提问于
浏览
3

我正在使用http core nio 4.3.3开发反向代理,需要通过代理连接到Secure / HTTPS endpoints . 我采用了反向代理(异步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 not supported

堆栈跟踪如下 .

[client<-proxy] 00000001 java.io.IOException: SSL not supported java.io.IOException: SSL not supported at org.apache.http.impl.nio.pool.BasicNIOConnFactory.create(BasicNIOConnFactory.java:159) at org.apache.http.impl.nio.pool.BasicNIOConnFactory.create(BasicNIOConnFactory.java:1) at org.apache.http.nio.pool.AbstractNIOConnPool.requestCompleted(AbstractNIOConnPool.java:484) at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.completed(AbstractNIOConnPool.java:770) at org.apache.http.impl.nio.reactor.SessionRequestImpl.completed(SessionRequestImpl.java:127) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels(AbstractIOReactor.java:423) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:288) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586) at java.lang.Thread.run(Thread.java:662)

我也启用了SSL调试日志,但仍无法解决问题 . 然后我调试了这个,发现代理接收到客户端的请求,并由于HttpAsyncRequestConsumer的handle方法中的异常而丢弃 . java.io.IOException例外:不支持SSL

另请注意,SSLContext在使用netty传输编写的反向代理时工作正常 .

任何帮助,将不胜感激 .

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

此致,拉文德拉 .

2 回答

  • 1

    在客户端使用连接池来管理传出连接时,需要确保池用于创建新连接对象的连接工厂具有SSL功能 . 请确保已正确配置连接池 .

  • 1

    非常感谢您的建议 . 这解决了这个问题 .

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

相关问题