我使用Jetty的ProxyServlet作爲HTTP代理。帶SSL支持的Jetty ProxyServlet
當我啓動服務器並在Firefox中添加襪子代理後,我可以通過代理訪問網站,沒有任何問題。
問題是,當我嘗試通過代理訪問HTTPs網站時。 Firefox顯示「未找到服務器」錯誤,在調試過程中,我沒有看到Java代碼中發生任何事情。
我錯過了什麼在這裏添加SSL支持Jetty?
下面是部分代碼:
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);
}
}
直接傳遞新的SslContextFactory()如果沒有正確的xml配置文件,HttpClient構造函數將無法工作。通過使用setTrustAll(true)或新的SslContextFactory(true)可以在沒有任何額外配置的情況下工作。但是,這是一個重大的安全漏洞,因爲它會盲目地信任所有的證書。 – 2017-04-21 19:35:30