O Ubuntu 17.04 netty-tcnative ALPN não está disponível para o mecanismo JDK SSL / TLS

1

Eu tenho um aplicativo Java (em execução no Oracle Java, mas o mesmo problema acontece com o OpenJDK) que usa netty-tcnative . Ele roda sem problemas no macOS, mas quando eu tento executá-lo no Ubuntu 17.04 eu recebo a seguinte exceção:

SEVERE: ALPN not available for JDK SSL/TLS engine
io.vertx.core.VertxException: ALPN not available for JDK SSL/TLS engine
    at io.vertx.core.net.impl.SSLHelper.resolveEngineOptions(SSLHelper.java:89)
    at io.vertx.core.net.impl.SSLHelper.<init>(SSLHelper.java:150)
    at io.vertx.grpc.VertxChannelBuilder.build(VertxChannelBuilder.java:148)
    at uk.ashleybye.grpc.tls.Client.start(Client.kt:22)
    at io.vertx.core.AbstractVerticle.start(AbstractVerticle.java:111)
    at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$8(DeploymentManager.java:434)
    at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:337)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:445)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
    at java.lang.Thread.run(Thread.java:748)

netty-tcnative requer openssl >= 1.0.2 e o Apache Portable Runtime. Eu tenho:

$ openssl version
OpenSSL 1.0.2g  1 Mar 2016

$ apt show libapr1
Package: libapr1
Version: 1.5.2-5

Tanto quanto eu posso averiguar, a localização correta da biblioteca para libapr é /usr/lib/x86_64-linux-gnu :

$ dpkg -L libapr1
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libapr-1.so.0.5.2
/usr/share
/usr/share/doc
/usr/share/doc/libapr1
/usr/share/doc/libapr1/changelog.Debian.gz
/usr/share/doc/libapr1/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libapr1
/usr/lib/x86_64-linux-gnu/libapr-1.so.0

E eu tentei adicionar a biblioteca ao LD_LIBRARY_PATH (como mencionado aqui ) criando /etc/ld.so.conf.d/libapr.conf e adicionando /usr/lib/x86_64-linux-gnu . Executando sudo ldconfig e ainda nada. Até mesmo adicioná-lo ao caminho padrão não faz nada.

Tanto quanto eu posso dizer, eu segui todas as instruções, mas ainda não está funcionando. O que é mais divertido é que ele funciona bem em um sistema operacional diferente. Não vale a pena nada que netty-tcnative exija binários específicos da plataforma, que eu detecto usando o google osdetector plugin para gradle. Isso detectou o binário do Linux. No entanto, mesmo se eu usar netty-tcnative-boring-static , ainda receberei a mesma exceção. Alternar versões também não ajuda (embora a versão 2x não seja executada no maxOS, mas usando 1.1.33.Fork26). Eu até instalei os pacotes libnetty-tcnative-java e -jni do apt, mas ainda não obtive sucesso.

Eu estou em uma perda completa e realmente poderia usar alguma ajuda para fazer isso funcionar. Alguma sugestão?

    
por amb85 30.06.2017 / 21:15

0 respostas