javax.net.ssl,https客户端和close_notify

mat*_*ter 7 ssl https dhc

使用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(未知来源)在sun.security.ssl.SSLEngineImpl.fatal(未知来源)在sun.security.ssl.SSLEngineImpl.fatal(未知来源)在sun.security.ssl.SSLEngineImpl .closeInbound(未知来源)在io.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:905)在io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:576)在io.netty.channel .ofaultChannelHandlerContext.invokeChannelInactive(DefaultChannelHandlerContext.java:819)at io.netty.channel.DefaultChannelHandlerContext.access $ 1300(DefaultChannelHandlerContext.java:38)at io.netty.channel.DefaultChannelHandlerContext $ 5.run(DefaultChannelHandlerContext.java:808)at io. netty.channel.SingleThreadEventExecutor.runAllTask​​s(SingleThreadEventExecutor.java:259)在io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:305)在io.netty.channel.SingleThreadEventExecutor $ 2.run(SingleThreadEventExecutor.java:110 )在java.lang.Thread.run(未知来源)

在客户端:

没有反应.证书有效吗?点击这里查看.

在Chrome的地址栏中发出相同的请求,即相同的服务器端异常.在Firefox的地址栏上发布相同的例外情况,同时Firefox正在显示关于证书不是来自可信CA的警告页面.此异常似乎非常通用,并不直接指示协议的状态.这意味着这三个客户端(Chrome,Firefox,DHC by Restlet)是不是很好地播放协议而只是消失在服务器而不是发送close_notify?或者这是SSL RFC所强制要求的客户端行为,还是仅面向安全的客户端设计?

Ant*_*edo 5

我已经与Restlet团队联系过DHC,他们告诉我一个解决方法:

Chrome不提供用于管理证书的API.换句话说,我们没有API来自动接受您的证书,也没有办法如何提出"不受信任的证书"对话框.但是,您可以使用一些解决方法:

  1. 在另一个选项卡中打开https URL.
  2. 手动接受证书.
  3. 返回DHC,它将起作用,因为您的证书已被上一步手动接受(存储在您的Chrome中).

通常你只需要做一次.