0

客户端可以从服务器接收到带有remotecertificatechain错误的证书,但服务器会抛出一个错误null cert chain

keystore当我使用.crt证书作为客户端时,我在 java 中传递了一个。我已将客户端证书导入服务器证书。

我注意到在握手过程中,当 java 服务器访问时getAcceptedIssuers,java netty 服务器会抛出一个异常捕获:

警告:来自下游的意外异常。
io.netty.handler.codec.DecoderException:javax.net.ssl.SSLHandshakeException:空证书链
    在 io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:262)
    在 io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:131)
    在 io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:334)
    在 io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:320)
    在 io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785)
    在 io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:100)
    在 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:497)
    在 io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized (NioEventLoop.java:465)
    在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:359)
    在 io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)....

知道为什么会这样吗?有什么建议可以解决这个问题吗?:(

4

1 回答 1

0

回答我自己的问题,结果证明代码没有问题!它与客户端的自签名证书一起使用。我使用 java 的 keytool 来制作自签名证书,但是当我使用 dotnetasyncsocket 在 c# 客户端上使用此证书时它不起作用。所以我所做的是在http://cert.startcom.org/上免费获得 CA 签署的证书。

于 2013-09-20T01:48:51.000 回答