我在javax.net和sun.net SSL实施以及Apache HttpClient 4.3 SSL处理(默认情况下使用javax.net设施)的过程中度过了几个激动人心的时刻,并且令人沮丧进展甚微。我试图通过先前创建的Input / OutputStreams来从HttpsURLConnection隧道传输流量,以便能够通过我自己的流发送数据来访问HTTP java.net实用程序。我原本认为我可以通过一个使用这些Input / OutputStreams的SocketImpl自定义Socket实例的HttpsURLConnection路由,但似乎我必须更改默认的HttpsURLConnection SSLFactory以实现这一点,这不适用于应用程序是多线程的。我可以接受替代图书馆和破解修复工作!
我希望实现的最终目标:Http(s)URLRequest(或支持SSL的等效HTTP工具) - >我的自定义插座 - >网络
答案 0 :(得分:2)
在我看来,您最好的选择是在每个相关的SSLSocketFactory
实例上安装自己的HttpsURLConnection
。它可以创建一个委托的SSLSocket
实例一个真实的,但返回你的流包裹在委托的流。
如果您出于某种原因需要访问密文,可以将其翻转并提供自己的Socket
至SSLSocketFactory.createSocket(Socket, ...)
,