Java 语言中,一条通过 SSLSocketFactory 创建的 SSLSocket,能否在进行 ssl 握手之前发送些数据?

2023-04-12 19:27:30 +08:00
 liut2016

如题,我对该 API 不够熟悉,没找到相关方法和思路,希望能获得帮助。

要求:使用现有 JSSE 接口的 TLS 实现,而不需要手搓 TLS 源码。

1164 次点击
所在节点    Java
11 条回复
kwh
2023-04-12 19:31:16 +08:00
可以,用 netty 写一个代理,把非 https 请求的数据过滤出来做处理,然后把剩余的 https 的数据发送到服务器。
liut2016
2023-04-12 19:39:09 +08:00
@kwh 好的,这是一条思路,不过业务简单不需要 netty (我不会),感谢解答
liut2016
2023-04-12 19:42:04 +08:00
还有其它的更简单的思路吗😂,多一层代理需要额外占用一个端口
liut2016
2023-04-12 19:45:10 +08:00
@kwh 不对,这样就不是同一条 socket 了,还是 netty 有特殊的能力可以这样,我先了解下 netty 吧
liut2016
2023-04-12 19:49:48 +08:00
补充一条说明:这个 socket 是客户端的,要求握手之前和之后在同一条 socket 中
kwh
2023-04-12 20:00:59 +08:00
按照我目前的知识,只能通过代理来处理,还没听说过 tomcat 能自定义协议的。

端口也不需要防火墙多开,让 tomcat 监听一个没通防火墙的端口,netty 通过本地与 tomcat 进行连接。

客户端与 nettyf 服务器之间创建 channel ,然 netty 与服务器之间创建 channel 。netty 只是一个中间商用来过滤非 http 数据,让 tomcat 服务能处理。
jackyzy823
2023-04-12 20:53:28 +08:00
不如先普通 socket,发送完之后再 Upgrade to SSLSocket?
tony1016
2023-04-12 20:59:58 +08:00
多年没写 java 了,让我来看看接口
abstract Socket createSocket(Socket s, String host, int port, boolean autoClose)
Returns a socket layered over an existing socket connected to the named host, at the given port.
既然可以接受已经存在的 socket ,那么完全可以写完后再创建 sslsocket
SoloCompany
2023-04-12 23:06:36 +08:00
liut2016
2023-04-13 17:53:52 +08:00
@SoloCompany 非常感谢
liut2016
2023-04-13 17:54:05 +08:00
@tony1016 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/932029

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX