gpt4 book ai didi

ssl - 支持 SSL 的 Jetty ProxyServlet

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:43 25 4
gpt4 key购买 nike

我正在使用 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/25574554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com