Я делаю 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 я заметил следующее:
Реализация на стороне клиента намного проще.
- Запись запроса StartTLS,
- ожидание ответа StartTLS,
- создание нового экземпляра SslHandler с флагом startTls, установленным в значение false,
- вставка SslHandler в ChannelPipeline и
- Инициирование 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
Ответ полученпосле первого запроса указан неверный запрос.
На данный момент нет ошибок, которые могут быть плохими.