gpt4 book ai didi

java - 如何处理服务器未启用 SSL/TLS 但客户端在 Java 中启用了 SSL/TLS 的负面测试用例

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:07 28 4
gpt4 key购买 nike

我有一个启用了 SSL 但不是我的服务器的客户端。

背景:所以我想做的是,

客户端:

  1. 客户端尝试连接到服务器
  2. 尝试写入流
  3. 读取服务器写入的数据
  4. 关闭conn

服务器端:

  1. 服务器接受 TCP 连接
  2. 尝试将客户端写入的数据读入流中
  3. 将回复写回给客户
  4. 关闭Conn

实际发生的是,服务器开始监听端口,然后客户端在握手开始之前连接到服务器。

连接到服务器意味着,客户端执行以下操作

SSLSocket sock = (SSLSocket)sslsocketfactory.createSocket(remoteAddress, port);

并且服务器接受使用,

ServerSocket.accept();

i/e ClientSide 和 ServerSide 步骤 1> 已完成

到现在还没有触发握手。

现在,当客户端尝试写入流时,在握手触发之前。

即客户端现在已进入第 2 步>,服务器也已进入读取数据。

我在 WireShark 中分析了数据包,客户端发送了 Client Hello。现在,由于服务器未启用 SSL,它在从客户端读取数据时卡住/停止,而客户端因为等待 Server Hello 消息而卡住。

最终双方都超时了,但实际应该如何处理。

最佳答案

Eventually both side timeout but how should it be handled actually.

鉴于客户端不知道服务器不使用 TLS,如果服务器没有响应,客户端没有比在一段时间后超时更好的方法。服务器可能会尝试尽早检查客户端发送的数据是否属于预期的协议(protocol)。这对于 HTTP 是可能的,因为 ClientHello 的前几个字节看起来与有效 HTTP 请求的开头完全不同。类似的启发式方法也可能适用于其他应用程序协议(protocol),但并非适用于所有协议(protocol)。

关于java - 如何处理服务器未启用 SSL/TLS 但客户端在 Java 中启用了 SSL/TLS 的负面测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947149/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com