检测SSL连接并将套接字转换为SSLSocket

时间:2014-09-03 05:45:36

标签: java sockets http ssl https

更新(此问题已解决):我已更新此问题中的代码以包含现在正在运行的代码,请随意在自己的作品中使用它(代码示例已模式为为了简单起见的废话)

下午好StackOverflow,

所以在过去的一天或者我一直在研究具有Web界面的服务器软件,我一直在尝试设置HTTPS连接的处理。我让它工作得很好但是现在我只想在一个TCP端口上处理HTTP和HTTPS连接。

我有可以检测到SSL / TLS ClientHello消息的代码,问题是在检测到消息后尝试将痛苦文本套接字转换为SSLSocket,而不是我正在使用的代码。

WebServer.java - > http://pastebin.com/JSjNpC2Y

SecurityTools.java - > http://pastebin.com/Q8yVLNp7

BufferedSocket.java - > http://pastebin.com/SuWB8P7r

BufferedSocketServer.java - > http://pastebin.com/Nr7MrhEH

当我连接HTTP什么都没发生时,甚至没有抛出错误或异常,当我连接HTTPS时,我得到以下一组异常(我链接到一个粘贴bin以节省此帖子中的空间)< / p>

http://pastebin.com/MirTqVpj

欢迎提供任何帮助和建议。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

重置您自己的输入流对底层套接字没有影响。您需要为Socket类创建自己的包装器,它返回一个可标记的输入流。然后,如果是SSL,则需要重置该流并将包装器传递给SSLSocketFactory。否则它将看不到您看到的客户端问候。