拒绝Java中HTTP服务器上的SSL连接



大家下午好,

我的HTTP服务器出现了一些问题。我已经制作了我自己的HTTP服务器(由于某些情况和需要,这是一个轻量级的HTTP服务器(,我想在我拥有的软件上实现它。这个HTTP API也用于允许HTTPS,但我的主要问题实际上是HTTP。

我面临的一个问题是在HTTP服务器上检索HTTPS连接。使用HTTPS作为服务器,使用HTTP作为来自客户端的连接会被拒绝,因为握手失败并向服务器发出异常。将HTTP服务器与HTTPS客户端一起使用的问题是,这些连接一直在运行,但消息是加密的。由于它是加密的,我无法读取信息和获取内容长度等详细信息,因此服务器正在等待一个永远不会到来的结束,因为它无法正确读取数据。

我想知道Java中是否有一种方法可以检测客户端是否正在使用加密响应来拒绝这些连接,而不是试图读取它们。这个套接字的主要问题是它们没有被检测为SSLSockets,它们是无法解密InputStream中信息的普通套接字。

提前谢谢。

您知道HTTP和HTTPS通常在不同的端口号上提供服务吗?所以80代表HTTP,443代表HTTPS。对于非特权端口,通常使用8000和8443。在仅HTTP端口上使用TLS连接的客户端出现故障,您的HTTP服务器应该可以轻松检测非HTTP流量:

如果收到的第一个单词不是您的服务器支持的HTTP动词之一,如GET、HEAD、POST、PUT、OPTIONS等。您的服务器应该发送400或408响应(408是请求超时,您的服务器只应该等待一段合理的时间来获取请求头(,然后关闭连接。

最新更新