Ошибка клиента Netty HTTP / 2 при подключении к https://http2.golang.org/ - PullRequest
0 голосов
/ 26 октября 2018

Я очень новичок в Нетти, и я все еще изучаю основы. В рамках экспериментов, которые я запускаю, я решил взять пример Http2Client (https://github.com/netty/netty/blob/4.1/example/src/main/java/io/netty/example/http2/helloworld/client/Http2Client.java) и попытаться подключиться к https://http2.golang.org/

Однако это привело к следующей ошибке:

.............. io.netty.handler.ssl.ApplicationProtocolNegotiationHandler handshakeFailure
WARNING: [id: 0xb57e60d4, L:/[MY-IP-IS-HERE]:59092 - R:http2.golang.org/130.211.116.44:443] TLS handshake failed:
javax.net.ssl.SSLHandshakeException: error:10000438:SSL routines:OPENSSL_internal:TLSV1_ALERT_INTERNAL_ERROR
    at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.shutdownWithError(ReferenceCountedOpenSslEngine.java:897)
    at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.sslReadErrorResult(ReferenceCountedOpenSslEngine.java:1147)
    at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.unwrap(ReferenceCountedOpenSslEngine.java:1101)
    at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.unwrap(ReferenceCountedOpenSslEngine.java:1169)
    at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.unwrap(ReferenceCountedOpenSslEngine.java:1212)
    at io.netty.handler.ssl.SslHandler$SslEngineType$1.unwrap(SslHandler.java:216)
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1297)
    at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1211)
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1245)
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)

У меня есть следующие зависимости в Maven pom:

  <dependency>
     <groupId>io.netty</groupId>
     <artifactId>netty-handler</artifactId>
     <version>4.1.30.Final</version>
  </dependency>
  <dependency>
     <groupId>io.netty</groupId>
     <artifactId>netty-codec-http</artifactId>
     <version>4.1.30.Final</version>
  </dependency>
  <dependency>
     <groupId>io.netty</groupId>
     <artifactId>netty-codec-http2</artifactId>
     <version>4.1.30.Final</version>
  </dependency>
  <dependency>
     <groupId>io.netty</groupId>
     <artifactId>netty-tcnative-boringssl-static</artifactId>
     <version>2.0.19.Final</version>
     <classifier>${os.detected.classifier}</classifier>
     <optional>true</optional>
  </dependency>

${os.detected.classifier} разрешается до windows-x86_64.

Кстати, все работает, когда я подключаю пример Http2Client к примеру Http2Server (https://github.com/netty/netty/blob/4.1/example/src/main/java/io/netty/example/http2/helloworld/server/Http2Server.java). Он также работает, когда я подключаю пример HttpSnoopClient (https://github.com/netty/netty/blob/4.1/example/src/main/java/io/netty/example/http/snoop/HttpSnoopClient.java) к примеру Http2Server.

Так, это проблема в Нетти? Или в netty-tcnative-boringssl-static? Или в http2.golang.org? Или в моей настройке?

Буду признателен за любые подсказки по этому вопросу.

...