Весенний Webflux. Проверка подлинности прокси-сервера и конечная точка ssl - PullRequest
1 голос
/ 29 октября 2019

Я тестирую веб-клиента с помощью службы ssl через прокси-соединение, но я получаю следующую ошибку с безопасным ssl-соединением.

Знаете ли вы, в чем проблема?

Трассировка стека:

{"отметка времени": "2019-10-29T18: 35: 43.534 + 0000", "путь": "/ футбол / районы", "статус": 500, "ошибка": "Внутренняя ошибка сервера", " сообщение": "ошибка при записи кадров управления TLS", "requestId": "abfc15e 8", "trace": "javax.net.ssl.SSLException: ошибкапри записи фрейма управления TLS s \ r \ n \ tat io.netty.handler.ssl.SslHandler.setHandshakeFailureTransportFailure (SslHandler.java:1807) \ r \ n \ tSup нажат: реактор.core.publisher.FluxOnAssemblyAs: \ nОшибка обнаружена на следующих сайтах: \ n \ t | _ контрольная точка Requestçó Запрос к GET https://api.football -data.org / v2 / area [DefaultWebClient] \ n \ t |_ контрольная точка Handçó Обработчик com.jpc.controller.ResillenceController # getAreas () [DispatcherHandler] \ n \ t | _ контрольная точка HTTPçó HTTP GET \ "/ football / area \" [Excepti onHandlingWebHandler] \ nОтслеживание стека: \ r \ n \ t \ tat io.netty.handler.ssl.SslHandler.setHandshakeFailureTransportFailure (SslHandler.java:1807) \ r \ n \ t \ tat io.netty.handler.sslHH.access $ 6 00 (SslHandler.java:165) \ r \ n \ t \ tat io.netty.handler.ssl.SslHandler $ 2.operationComplete (SslHandler.java:942) \ r \ n \ t \ tat io.netty. handler.ssl.SslHandler $ 2.operationComplete (SslHandler.java:9 37) \ r \ n \ t \ tat io.netty.util.concurrent.DefaultPromise.notifyListener0 (DefaultPromise.java:577) \ r \ n \ t \ tatio.netty.util.concurrent.DefaultPromise.notifyListenersNow (DefaultPromise.java:55 1) \ r \ n \ t \ tat io.netty.util.concurrent.DefaultPromise.notifyListeners (DefaultPromise.java:490) \ r \ n \t \ tat io.netty.util.concurrent.DefaultPromise.setValue0 (DefaultPromise.java:615) \ r \ n \ t \ t в io.netty.util.concurrent.DefaultPromise.setFailure0 (DefaultPromise.java:608) \ r\ n \ t \ tat io.netty.util.concurrent.DefaultPromise.tryFailure (DefaultPromise.java:117) \ r \ n \ t \ tat io.netty.c hannel.PendingWriteQueue.safeFail (PendingWriteQueue.java:285) \r \ n \ t \ tat io.netty.channel.PendingWriteQueue.removeAndFailAll (PendingWriteQueue.java:181) \ r \ n \ t \ tat io.netty.handler.proxy.P roxyHandler.failPendingWrites (ProxyHandler.java:437)\ r \ n \ t \ tat io.netty.handler.proxy.ProxyHandler.failPendingWritesAndClose (ProxyHandler.java:354) \ r \ n \ t \ tat io.netty.handler.proxy.Proxy Handler.setConnectFailure (ProxyHandler.java: 349) \ r \ n \ t \ tat io.netty.handler.proxy.ProxyHandler.channelRead (ProxyHandler.java:269) \ r \ n \ t \ tat io.netty.channel.AbstractChannelHandlerContext .invokeChannelRead (AbstractChannelHandlerContext.j: 374) \ r \ n \ t \ tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:360) \ r \ n \ t \ tat io .netty.channel. ) \ r \ n \ t \ tat io.netty.channel.CombinedChannelDuplexHandler $ DelegatingChannelHandlerConte xt.fireChannelRead (CombinedChannelDuplexHandler.java:438) \ r \ n \ t \ tat io.netty.handler.codec.ByteToMessageH(ByteToMessageDecoder.java:328)\r\n\t\tat io.netty.handler.

Код веб-клиента

public AreaServiceImpl(){

    HttpClient httpClient = HttpClient.create().secure(sslContextSpec -> {
        try {
            sslContextSpec.sslContext(SslContextBuilder
                    .forClient()
                    .trustManager(InsecureTrustManagerFactory.INSTANCE)
                    .build());
        } catch (SSLException e) {
            e.printStackTrace();
        }
    })
            .tcpConfiguration(tcpClient -> {
                return tcpClient.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,8000)
                        .proxy(typeSpec -> {
                            typeSpec
                                    .type(ProxyProvider.Proxy.HTTP)
                                    .host("proxy")
                                    .port(port)
                                    .username("user")
                                    .password(s -> "password").build();

                        });

            });


    ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);

    //this.webClient = WebClient.create("https://api.football-data.org").;

    this.webClient = WebClient.builder().clientConnector(connector).baseUrl("https://api.football-data.org").build();
}
...