При попытке обойти приложение Java Vert.x для сшивания OCSP пришлось использовать библиотеку netty-tcnative
, и в процессе было обнаружено следующее исключение.
io.vertx.core.impl.ContextImpl -
Unhandled exception java.lang.UnsatisfiedLinkError: io.netty.internal.tcnative.SSLContext.make(II)J
at io.netty.internal.tcnative.SSLContext.make(Native Method)
......
......
at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Кажется, Как будто отсутствует какая-то нативная библиотека, но неясно, какая именно.
Фрагмент кода
int protocolOpts = 30;
int mode = 1; // 1 for server and 0 for client
try {
long ctx = io.netty.internal.tcnative.SSLContext.make(protocolOpts, mode);
io.netty.internal.tcnative.SSLContext.enableOcsp(ctx, false);
} catch (Exception e) {
e.printStackTrace();
}
Сведения об окружении:
Ubuntu 18.04
netty-tcnative/2.0.28.Final/linux-x86_64
Openssl version: 1.1.1d (10 Sep 2019)
Я понимаю, что не идеально использовать internal
пакеты (вариант Boringssl вообще не имеет этого пакета), но это один из обходных путей, который я мог бы попробовать, пока не будет решен https://github.com/eclipse-vertx/vert.x/issues/1689 , Любые предложения по этому поводу также должны быть полезны.