如何解决收到 ClientHello 后的 netty sslcontextbuilder 服务器 sslcontext 异常
在缩小问题范围后进行编辑
我目前正在尝试在 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 举报,一经查实,本站将立刻删除。