Netty SSL инициализация рукопожатия - PullRequest
0 голосов
/ 16 октября 2019

Я делаю MITM forward proxy, однако netty никогда не инициирует ssl-рукопожатие в качестве клиента. Запрос, который я пытаюсь отправить, по-видимому, зашифрован и использует протокол SSL, но «Информация», отображаемая wireshark, говорит «Данные продолжения» без предварительного подтверждения.

В основном я пытался работать с applicationProtocolConfig. SslHandler создается, как показано ниже, и добавляется в конвейер.

SslContext sslCtx = SslContextBuilder
                .forClient()
                .ciphers(Http2SecurityUtil.CIPHERS, SupportedCipherSuiteFilter.INSTANCE)
                .applicationProtocolConfig(new ApplicationProtocolConfig(
                        Protocol.ALPN,
                        SelectorFailureBehavior.NO_ADVERTISE,
                        SelectedListenerFailureBehavior.ACCEPT,
                        ApplicationProtocolNames.HTTP_1_1))
                .trustManager(InsecureTrustManagerFactory.INSTANCE)
                .build();

SslHandler sslHandler = sslCtx.newHandler(ctx.alloc());

В документации netty я заметил следующее:

Реализация на стороне клиента намного проще.

  1. Запись запроса StartTLS,
  2. ожидание ответа StartTLS,
  3. создание нового экземпляра SslHandler с флагом startTls, установленным в значение false,
  4. вставка SslHandler в ChannelPipeline и
  5. Инициирование SSLhandshake.

Должен ли я отправить запрос StartTLS или он уже выполнен Netty? Могут помочь любые соответствующие примеры. Я рассмотрел примеры, предоставленные netty, но безуспешно.

Запрос отправлен по конвейеру (если он уместен)

GET / HTTP/1.1
Host: codepen.io
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
content-length: 0

Ответ полученпосле первого запроса указан неверный запрос.

На данный момент нет ошибок, которые могут быть плохими.

...