Monday, February 20, 2012

creating a Java Proxy Server that accepts HTTPS


i already have a working HTTP proxy server that can handle multiple HTTP request. now my problem is how do I handle https request?



here's a simplified code i am using:




class Daemon
{
public static void main(String[] args)
{
ServerSocket cDaemonSocket = new ServerSocket(3128);

while(true)
{
try
{
Socket ClientSocket = cDaemonSocket.accept();
(new ClientHandler(ClientSocket )).start();
}catch(Exception e) { }
}
}

}



and the ClientHandler




class ClientHandler extends Thread
{
private Socket socket = null;
private Socket remoteSocket = null;
private HTTPReqHeader request = null;
ClientHandler(Socket socket)
{
this.socket = socket;
request = new HTTPReqHeader();
request.parse(socket); // I read and parse the HTTP request here
}

public void run()
{
if(!request.isSecure() )
{
remoteSocket = new Socket(request.url,request.port);
}
else
{
// now what should I do to established a secured socket?
}

// start connecting remoteSocket and clientSocket
...........
}
}



}



I really did try searching how, I have encounter SSL tunneling, certificate,handshaking, SSLSocket, SSLFactory, trustStore and etc. something like that but still could not make it work.. I just need to know what are the things I need and the steps to established a connection to a SSL-enabled web server.

1 comment:

  1. Google "https server in java" and you may find a relevant tutorial, a related RFC and standard documentation. I hope this will help :).

    ReplyDelete