将 Java SSLSocket 转换为未加密的套接字

Converting Java SSLSocket to unencrypted Socket

我想获取已经使用加密连接交换敏感信息的现有 SSL 连接,并将其切换回使用未加密的套接字。我正在使用 SSLServerSocketFactory.createServerSocket ,它实际上监听来自客户端的请求。现在在执行 ServerSocket.accept 之后,我得到 SSLSocket,我用它来进行一些敏感信息的初始交换。完成此交换后,我想以未加密的方式使用同一个套接字(如普通套接字)。有可能吗?

在网上我得到的回复是我可以使用 SSLSocketFactory.createSocket 并将 autoClose 设置为 false。鉴于 SSLServerSocketFactory 没有此参数,我不确定这有什么帮助。

感谢您的任何意见。

不要使用 SSLServerSocketFactory。使用普通的 ServerSocket 来监听并创建一个普通的服务器端 Socket 并将其提供给 SSLSocketFactory.createSocket(Socket,InputStream,boolean) with autoClose=false 并且如果适用的话 consumed=null。阅读链接的 javadoc 解释了这是如何工作的。结束连接的 SSL 部分后,根据需要继续使用 Socket