运行Netty 3.3.1-Final Secure Chat示例开箱即用,出现错误“客户端/服务器模式尚未设置”。

时间:2012-03-02 15:39:36

标签: security ssl chat netty

我正在运行Netty 3.3.1安全聊天示例,它出错了。它似乎是客户端遇到问题 - 错误显示“客户端/服务器模式尚未设置。”

我阅读了有关SSLHandler的文档,其中写道:“如果isIssueHandshake为false(默认),您需要自己处理调用握手。在大多数情况下,SslHandler用于'客户端模式'您想要发出建立连接后握手。如果setIssueHandshake设置为true,则不需要担心这一点,因为SslHandler会处理它。“

我尝试在调用sslHandler.handshake方法之前在客户端中将setIssueHandshake设置为true,但这并未更改/修复错误。

任何猜测?

感谢您为此netty新手提供任何帮助!

这是客户端输出:

    2012年3月2日上午10:25:27 securechat.SecureChatClientHandler handleUpstream     信息:[id:0x00c2a132] OPEN     2012年3月2日上午10:25:27 securechat.SecureChatClientHandler handleUpstream     信息:[id:0x00c2a132,/ 127.0.0.1:3082 => localhost / 127.0.0.1:8443] BOUND:/127.0.0.1:3082     2012年3月2日上午10:25:27 securechat.SecureChatClientHandler handleUpstream     信息:[id:0x00c2a132,/ 127.0.0.1:3082 => localhost / 127.0.0.1:8443] CONNECTED:localhost / 127.0.0.1:8443     2012年3月2日上午10:25:27 securechat.SecureChatClientHandler exceptionCaught     警告:下游出现意外异常。     java.lang.IllegalStateException:尚未设置客户端/服务器模式。             at com.sun.net.ssl.internal.ssl.SSLEngineImpl.kickstartHandshake(SSLEngineImpl.java:609)             at com.sun.net.ssl.internal.ssl.SSLEngineImpl.beginHandshake(SSLEngineImpl.java:667)             在org.jboss.netty.handler.ssl.SslHandler.handshake(SslHandler.java:358)             在securechat.SecureChatClientHandler.channelConnected(SecureChatClientHandler.java:54)             在securechat.SecureChatClientHandler.handleUpstream(SecureChatClientHandler.java:43)             在org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:61)             在org.jboss.netty.handler.ssl.SslHandler.channelConnected(SslHandler.java:1202)             在org.jboss.netty.channel.Channels.fireChannelConnected(Channels.java:227)             在org.jboss.netty.channel.socket.nio.NioWorker $ RegisterTask.run(NioWorker.java:786)             在org.jboss.netty.channel.socket.nio.NioWorker.processRegisterTaskQueue(NioWorker.java:250)             在org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:192)             at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)             at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)             在java.lang.Thread.run(Thread.java:619)

这是服务器输出:

    信息:[id:0x01893efe,/ 127.0.0.1:3082 => /127.0.0.1:8443]开放     2012年3月2日上午10:25:27 securechat.SecureChatServerHandler handleUpstream     信息:[id:0x01893efe,/ 127.0.0.1:3082 => /127.0.0.1:8443] BOUND:/127.0.0.1:8443     2012年3月2日上午10:25:27 securechat.SecureChatServerHandler handleUpstream     信息:[id:0x01893efe,/ 127.0.0.1:3082 => /127.0.0.1:8443]已连接:/127.0.0.1:3082

2 个答案:

答案 0 :(得分:3)

这是示例中的已知错误。如果您查看SecureChatClientPipelineFactory.java,您会发现调用SSLEngine.setUseClientMode(true)的行已被错误地注释掉了。请取消注释,然后它将工作。此问题已在3.4.0.Alpha1中修复。

答案 1 :(得分:0)

谢谢您的信任。似乎“此问题已在3.4.0.Alpha1中修复。”不正确。

sslEngine.setUseClientMode(true);

它在4.1.33.Final上再次起作用。