我想使用已经使用加密连接交换敏感信息的现有SSL连接,并将其切换回使用未加密的套接字。我正在使用 SSLServerSocketFactory.createServerSocket ,它实际上侦听来自客户端的请求。在完成 ServerSocket.accept 之后,我得到 SSLSocket ,我用它来做一些敏感信息的初始交换。一旦我完成了这个交换,我想以一种未加密的方式使用相同的套接字(就像一个普通的Socket)。它有可能吗?
在网上我收到回复,我可以使用 SSLSocketFactory.createSocket 并将 autoClose 设置为false。鉴于 SSLServerSocketFactory 没有此参数,我不确定这有何帮助。
感谢您的任何意见。
答案 0 :(得分:1)
不要使用SSLServerSocketFactory
。使用普通的ServerSocket
来监听并创建一个普通的服务器端Socket
,并使用autoClose = false将其提供给SSLSocketFactory.createSocket(Socket,InputStream,boolean),如果适用,则消耗= null。阅读链接的javadoc解释了这是如何工作的。结束连接的SSL部分后,根据需要继续使用Socket
。