我使用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