在SSL握手期间缺少ServerHelloDone

3

我尝试使用Java小程序连接到wss(安全WebSocket)服务器,但是SSL握手失败,没有任何有用的日志条目。

如果我连接到wss://echo.websocket.org,握手就能成功,所以我认为这不是一般的Java代码错误。

如果我尝试连接到自己的服务器,则会发送HelloDone位(通过wireshark验证),但连接会在挂起中结束,并且不在日志中。通常应该在日志中出现以下消息:“*** ServerHelloDone”

请参阅我的Java控制台日志“javax.net.debug = sll” http://pastebin.com/ZuvKww4J 它不是被截断了,它只是在那里结束。 几秒钟后,TCP连接超时消息会添加到日志中。

我使用以下Java代码示例: https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java

但是我使用的是:

sslContext.init( null, null, null );

针对服务器,我有两个不同的测试系统:

  1. 在端口443上是一个ha-proxy
  2. 在端口8443上是一个stunnel。

我尝试了不同的方法来隔离错误。首先,我强制使用与echo.websocket.org相同的加密方式“SSL_RSA_WITH_RC4_128_SHA”来使用stunnel,但没有成功。

其次,我检查了ssl证书本身是否仍然有效。但由于通过Web浏览器和我的Java小程序的正常https连接都被服务器(同一台服务器,ha-proxy或stunnel)接受,所以在这一点上一切都可以工作。


我最近遇到了这样的问题。我发布了一个非常不同的问题,但你可以按照我所做的步骤,也许能帮助你找到根本原因:https://dev59.com/s2_Xa4cB1Zd3GeqP6vHZ - Avi
4K RSA。可能是一些奇怪的加密限制吗? - user1516873
现在我尝试使用一个自签名的2048位SHA1withRSA证书(与echo.websocket.org完全相同),但它仍然无法工作。我使用了-keyalg RSA -sigalg SHA1withRSA参数。感谢Avi和user1516873。 - GreenRover
1个回答

0

问题已经被Java-WebSocket的维护者解决了。非常感谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接