SslSocket没有写入底层套接字

时间:2018-01-23 07:47:11

标签: java ssl tls1.2

我从现有的连接服务器套接字创建了一个SslSocket。

SSLSocketFactory socketFactory = sslContext.getSocketFactory();
SSLSocket sslSocket = (SSLSocket) socketFactory.createSocket(socket, socket.getInetAddress().getHostAddress(), socket.getPort(), false);

在此步骤之后,ssl握手成功。

当我写入sslSocket时,我能够看到日志(-Djavax.net.debug=all)显示SslEngine正在进行加密,因为它会在加密前打印字节

 Padded plaintext before ENCRYPTION:  len = 276
 0000: 01 00 01 14 C0 00 01 10   00 00 00 04 28 60 00 02
 ....
 WRITE: TLSv1.2 Application Data, length = 300

但它不会将任何数据写入套接字。日志中也没有打印加密字节。似乎在打印WRITE: TLSv1.2 Application Data, length = 300后卡在某处。我查看了WireShark,没有传输字节。

但是同样的sslSocket能够在握手阶段进行握手并写入套接字。

类似地,我有另一种情况,其中连接的客户端套接字转换为sslSocket。在这种情况下,它在握手后工作正常,并且能够将加密数据发送到套接字。

不确定为什么在握手后它在服务器机箱中不起作用。

0 个答案:

没有答案