我正在尝试编写自定义代理服务器来处理https连接。 Java中是否存在与.NET SSLStream等效的内容?
答案 0 :(得分:1)
您可能需要使用SSLSocketFactory
来创建SSL ServerSocket
。相关的服务器套接字将负责(具有特定/实现的in
和out
流)数据加密和相关进程。
您可以将SSL设置指定为系统属性,如下所示。
System.setProperty("javax.net.ssl.trustStore", "<<path of your key>>");
System.setProperty("javax.net.ssl.trustStorePassword", "<<store passwd if specified>>");
//System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.debug", "all");
稍后,您需要初始化ServerSocket
,如下所示
int port=3128,backlog=32;
ServerSocket ss=SSLServerSocketFactory.getDefault().createServerSocket(port, backlog, InetAddress.getLoopbackAddress());
其余工作就像普通(非ssl)流程一样,只是听取请求并继续进行。
while(ss.isBound()){
Socket s=ss.accept();
InputStram in=s.getInputStream();
OutputStream os=s.getOutputStream();
//.....rest of teh work
}