ssl - 支持 SSL 的 Jetty ProxyServlet

标签 ssl proxy jetty

我正在使用 Jetty 的 ProxyServlet 作为 HTTP 代理。

在我启动服务器并在 firefox 中添加 socks 代理后,我可以通过代理访问网站,没有任何问题。

问题是当我尝试通过代理访问 HTTPs 网站时。 Firefox 显示“未找到服务器”错误,在调试期间我没有看到我的 Java 代码发生任何事情。

我是否遗漏了向 Jetty 添加 SSL 支持的内容?

部分代码如下:

    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);
      } 
   }

最佳答案

ZmK 的答案只是 Jetty 存储库中示例的副本,甚至不起作用。

Jetty 默认没有 HTTPS 代理。 AsyncProxyServlet 和 ProxyServlet 类只做 HTTP 代理。为了让您做一个 HTTPS 代理,请执行以下操作:

  1. 创建一个从 AsyncProxyServlet 类扩展的类。
  2. 重写 createHttpClient() 方法。这里的关键是您将创建的 HttpClient 实例将需要一个 SslContextFactory()。只需在 HttpClient 对象上使用适当的设置来设置 SslContextFactory,您就可以开始了。

下面是详细的代码示例: https://github.com/k2k2e6/jettyHttpsProxy

关于ssl - 支持 SSL 的 Jetty ProxyServlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9852056/

相关文章:

java - 在 Java 中将 URL 映射到请求处理程序的最简单方法

ssl - nginx 响应所有域

php - Symfony2 打开 stream_socket_client()

spring - Grails 1.2.1 与 Jetty 下 Spring 3.0.0 的依赖问题

android - Sencha Touch 2.1 native (android)应用程序无法从远程获取 json(它适用于 PC)

Python pip install(使用代理)无法解析 VPN 后面的 VM 中的服务器

intellij-idea - 如何让 jrebel、jetty、gradle 和 intellij idea 一起工作

ssl - 带有 Nginx 的 Docker - Https 不工作

ssl - DocuSign Connect 可以使用我们的 PKI 证书连接到我们的服务器吗?

sockets - 使用 demo.docusign.net 提供的 docusign Rest API 时获取 ssl socket factory null