Jetty ProxyServlet with SSL support
jetty, proxy, ssl
Solution
You can use a "ConnectHandler"
http://grepcode.com/file/repo1.maven.org/maven2/org.eclipse.jetty/example-jetty-embedded/8.1.1.v20120215/org/eclipse/jetty/embedded/ProxyServer.java
public class ProxyServer {
public static void main(String[] args) throws Exception {
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8888);
server.addConnector(connector);
HandlerCollection handlers = new HandlerCollection();
server.setHandler(handlers);
// Setup proxy servlet
ServletContextHandler context = new ServletContextHandler(handlers, "/", ServletContextHandler.SESSIONS);
ServletHolder proxyServlet = new ServletHolder(ProxyServlet.class);
proxyServlet.setInitParameter("whiteList", "google.com, www.eclipse.org, localhost");
proxyServlet.setInitParameter("blackList", "google.com/calendar/*, www.eclipse.org/committers/");
context.addServlet(proxyServlet, "/*");
// Setup proxy handler to handle CONNECT methods
ConnectHandler proxy = new ConnectHandler();
proxy.setWhite(new String[]{"mail.google.com"});
proxy.addWhite("www.google.com");
handlers.addHandler(proxy);
server.start();
}
}
Problem
I am using Jetty's ProxyServlet as a HTTP proxy. After I start the server and add the socks proxy in firefox I can access websites through the proxy without any problems. The problem is that when I try to access a HTTPs website through the proxy. Firefox displays a "Server not found" error and during debugging I don't see anything happening in my Java code. Am I missing something here to add SSL support to Jetty? Here's part of the code: ``` Server httpProxy = new Server(8087); ServletHandler servletHandler = new ServletHandler(); servletHandler.addServletWithMapping(new ServletHolder(new TunnelProxyServlet()), "/*"); httpProxy.setHandler(servletHandler); try { httpProxy.start(); } catch (Exception ex) { Logger.getLogger(HttpProxy.class.getName()).log(Level.SEVERE, null, ex); } public class TunnelProxyServlet extends ProxyServlet { @Override public void init(ServletConfig config) throws ServletException { super.init(config); System.out.println("init done !"); } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("got a request !"); super.service(req, res); } } ```