Java SslContext getInstance()未找到本机openssl实现

Java SslContext getInstance()未找到本机openssl实现,java,openssl,netty,Java,Openssl,Netty,正如Netty所建议的那样,我试图通过使用本机而不是Java实现来优化TLS加密的数据传输。为了简化工作,我使用“uber”静态boringssl jar进行了部署,如下所述: 我们的代码通过执行SslContext.getInstance()加载SslContext。在不指定提供程序的情况下,它总是查找Java实现,但指定SslProvider.OPENSSL会导致 java.security.NoSuchProviderException: no such provider: OPENSS

正如Netty所建议的那样,我试图通过使用本机而不是Java实现来优化TLS加密的数据传输。为了简化工作,我使用“uber”静态boringssl jar进行了部署,如下所述:

我们的代码通过执行SslContext.getInstance()加载SslContext。在不指定提供程序的情况下,它总是查找Java实现,但指定SslProvider.OPENSSL会导致

java.security.NoSuchProviderException: no such provider: OPENSSL
下面是一个小型存储库,简单演示了该问题。包含的示例输出来自于在SL7.9上运行。rpm查询演示了节点上是否存在openssl库。测试代码在运行之前还打印出类路径上的所有Netty jar,可以看到,静态boringssl jar就在那里

我想我在这里忽略了一些简单或明显的事情,但我非常感谢您提供的任何帮助


所有这些文件都过时了。在构建
SslContext
时,只需指定
SslProvider.OPENSSL

SslContext sslCtx = SslContextBuilder.forServer(cert, key)
        .sslProvider(SslProvider.OPENSSL)
        .build();

也就是说,一旦它出现在类路径上,默认情况下也应该使用它。

OMG。javax.net.ssl.SSLContext与io.netty.handler.ssl.SSLContext。那件事正好发生在我身上。谢谢。请投票:)或使用类路径中的库:```java SslContext sslCtx=SslContextBuilder.forServer(cert,key).sslProvider(SslContext.defaultClientProvider()//对于c客户端SslContext.defaultServerProvider()//对于服务器)。build(); ```很抱歉格式化不好