8

使用 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.runAllTask​​s(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 要求的客户端行为,或者仅仅是面向安全的客户端设计?

4

2 回答 2

5

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

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

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

通常你只需要这样做一次。

于 2013-07-10T15:57:05.227 回答
1

我在 linux 机器上安装 Java 的开放 JDK 版本时遇到了这个问题,当我将 Java 版本更改为 Oracle JDK 时,问题就消失了。

引发此异常的确切应用程序是 Information Workbench(流体操作产品),Java 版本为 8 使用流体操作人员在系统先决条件中未提及的 Java 版本。

于 2016-08-25T09:00:12.217 回答