使用 javax.net.ssl 的 https 服务器的简单 Netty 实现,带有自签名证书。服务器已启动,然后Restlet 使用 DHC发出请求。在服务器端,我得到:
io.netty.handler.ssl.SslHandler setHandshakeFailure 警告:SSLEngine.closeInbound() 由于连接关闭而引发异常。javax.net.ssl.SSLException:入站在收到对等方的 close_notify 之前关闭:可能的截断攻击? 在 sun.security.ssl.Alerts.getSSLException(Unknown Source) 在 sun.security.ssl.SSLEngineImpl.fatal(Unknown Source) 在 sun.security.ssl.SSLEngineImpl.fatal(Unknown Source) 在 sun.security.ssl.SSLEngineImpl .closeInbound(Unknown Source) at io.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:905) at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:576) at io.netty.channel .DefaultChannelHandlerContext.invokeChannelInactive(DefaultChannelHandlerContext.java:819) 在 io.netty.channel.DefaultChannelHandlerContext.access$1300(DefaultChannelHandlerContext.java:38) 在 io.netty.channel.DefaultChannelHandlerContext$5.run(DefaultChannelHandlerContext.java:808) 在 io。 io.netty 上的 netty.channel.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:259)。channel.nio.NioEventLoop.run(NioEventLoop.java:305) at io.netty.channel.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:110) at java.lang.Thread.run(Unknown Source)
在客户端:
没有反应。证书有效吗?点击这里查看。
在 Chrome 的地址栏发出相同的请求,同样的服务器端异常。在 Firefox 的地址栏发出同样的问题,当 Firefox 显示其关于证书不是来自受信任的 CA 的警告页面时,同样的异常。这个异常看起来很笼统,并不直接表明协议的状态是什么。这是否意味着这 3 个客户端(Chrome、Firefox、Restlet 的 DHC)没有很好地播放协议,只是在服务器上消失而不是发送 close_notify?还是 SSL RFC 要求的客户端行为,或者仅仅是面向安全的客户端设计?