当前位置: 首页 > 知识库问答 >
问题:

网易网SSL客户端握手成功后不工作

孙文康
2023-03-14

我想使用Netty框架创建一个安全的websocket客户端 - 服务器通信。我看了一下网络示例,有一个使用网络索克SSL服务器的示例:https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/http/websocketx/sslserver

还有一个例子是websocket客户端,但没有ssl:https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/http/websocketx/client

因此,我将SslHandler作为ChannelPipelinehandle的第一个处理程序,正如这里所建议的:如何将netty websocket客户端与wss一起使用?

但它仍然不起作用。客户机成功连接到服务器(握手成功),但当客户机向服务器发送消息(例如PingWebSocketFrame或任何其他WebSocketFrame)时,什么也没有发生。服务器未收到任何消息。

你知道可能出了什么问题吗?

编辑:我使用4.0.0.CR5,准确地说,服务器总是收到一些东西,但只有第一个SSLHandler。然后,管道中的下一个处理程序(HttpRequestDecoder)有时只接收到消息,当它接收到消息时,它会创建DefaultHttpRequest,并出现以下故障:

decodeResult: failure(java.lang.非法描述异常: 无效的版本格式: | LZSᄎ

那些奇怪的字符可能应该代表一个HTTP版本,但看起来SSLHandler没有正确解码它们?

共有1个答案

宗政颖逸
2023-03-14

我也有同样的问题(你可以在这里看到stackoverflow的帖子)。

客户端上的示例代码使用通道。write()方法,它似乎不会将消息转发到Websocket ssl服务器。通过使用通道。相反,writeAndFlush()会将消息正确发送到服务器。

所有这些都使用netty 4.0.9.Final版本进行了测试

 类似资料:
  • 我所拥有的是一个在Dropwizard之上实现的服务器,它需要接受传入的HTTPS连接,并使用附加的证书来唯一标识客户端。我目前在开发过程中使用所有自签名证书。服务器证书对是使用链根对->中间对->服务器对创建的。服务器的P12是使用中间证书和服务器证书加上服务器私钥的串联来创建的。然后它被添加到一个空的JKS中,并成为服务器的密钥库。 我分别创建了两个客户端证书,一个使用相同的中间对作为基础,另

  • 如有任何帮助,我们将不胜感激。 PS:我使用的是java7

  • 我已经能够通过HTTP使用Eureka+ZUUL+Ribbon+Config Server设置并成功验证Spring cloud设置。 然而,当我尝试转移到HTTPS时,单个服务在HTTPS上运行良好,但Eureka客户端发现却失败了。

  • 9/24 14:00 ~ 17:00 给两个球队名,然后是 n 行,每行 3 个数据,分别是球员名, 球员所属的球队,球员的得分,要求输出获胜队伍(可能平局),MVP球员(如有多个,输出先拿到最高分的)。(15分)(送分题) n 个玩家,m 个阵营,k 个草地(圆形或矩形),玩家可通过站在草地内隐身或拥有拥有隐身buff隐身,相交的草地内的玩家可互相看见,在草地外的玩家不能看见的草地内不同阵营的玩

  • 问题内容: 这是“ 使用自签名证书和SSLEngine(JSSE)进行SSL握手 ”的后续问题。 我实现了一个NIO Web服务器,该服务器可以在同一端口上处理SSL和非SSL消息。为了区分SSL消息和非SSL消息,我检查了入站请求的第一个字节,看看它是否是SSL / TLS消息。例: 在parseTLS()方法中,我实例化了一个SSLEngine,启动了握手,包装/展开消息等。对于大多数现代We

  • 我有以下建立SSL连接的简单代码。 如果我在Java8下运行这段代码,它就不起作用了。它以开始SSL握手时停止。 代理端口:8081 如果删除或将其设置为false,它也不能用于Java10。但是通过系统属性设置代理设置是不起作用的。