问题描述
在缩小问题范围后进行编辑
我目前正在尝试在 FIPS 模式(来自 bctls-fips 1.0.11)和 Java 15.0.1 上的 netty sslbuildercontext (4.1.58.Final) 下使用 Bouncycastle 的 JSSE 提供程序来创建服务器 SSL 上下文。当服务器启动并绑定到端口时,在收到 ClientHello 时抛出以下异常:
io.netty.handler.codec.DecoderException: java.lang.NullPointerException: Cannot invoke "org.bouncycastle.tls.TlsContext.getSecurityParameters()" because the return value of "org.bouncycastle.tls.TlsProtocol.getContext()" is null
at io.netty.handler.codec.BytetoMessageDecoder.callDecode(BytetoMessageDecoder.java:478)
at io.netty.handler.codec.BytetoMessageDecoder.channelRead(BytetoMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
创建服务器sslcontext的代码如下:
val sslContext = SslContextBuilder.forServer(keyMgrFact)
.trustManager(trustMgrFact)
.keyManager(keyMgrFact)
.clientAuth(ClientAuth.REQUIRE)
.build
keyMgrFact 和 trustMgrFact 使用 BCJSSE PXIK 实例。
我想知道我是否没有在 sslcontextbuilder 上调用任何其他方法,因为问题似乎是 netty 没有正确使用 bouncycastle 设置底层 TLS 上下文。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)