能够处理HTTP和HTTPS请求的代理服务器 - Java

4

我在这里寻找Java编写的能够处理HTTP和HTTPS请求的代理服务器的资源或示例代码。我在谷歌上搜索到了很多如何处理HTTP请求的数据,但没有HTTPS相关的信息。


什么是用例?Stephen C提供了一个通用问题的正确答案。你也许在谈论需要SSL卸载的情况吗?当你的Web服务器技术不支持加密时的情况? - Mark O'Connor
你是在寻找一个可以在大多数浏览器中配置的代理服务器(我称之为“普通”HTTP/HTTPS代理),还是需要能够查看HTTPS请求的代理服务器(我称之为“MITM代理”)?后者需要浏览器允许自己被欺骗以信任其证书。 - Bruno
2个回答

2

代理无法处理HTTPS并提供端到端的安全性。这是使用SSL/TLS构建HTTPS时不可能的。

而且,一个不提供端到端安全性的代理只有有限的用途。所以我不奇怪你找不到现有的实现。


2
这取决于问题的具体内容:是关于如何像“MITM代理”一样运行,从而查看请求,还是一个普通的HTTPS代理(不进行查看,维护端到端的安全性)。两者都存在。 - Bruno
我一直认为“普通”代理是指可以执行缓存和过滤等操作的代理。为了实现这些功能,代理必须成为中间人,因为它必须查看请求和响应。 - Stephen C
当你在主流浏览器中配置HTTP代理服务器时,它们的行为被称为“正常”。如果你在Firefox或IE中配置了一个“正常”的HTTP代理服务器,它将会对https:// URI使用纯HTTP连接,然后使用CONNECT动词连接URI中的主机名和端口。我所知道的是,尽管从未最终确定下来,但这个规范已经被用户代理多年用于通过HTTP代理进行https://连接:http://tools.ietf.org/html/draft-luotonen-web-proxy-tunneling-01 - Bruno

1

我假设你想要一个普通的HTTPS代理,也就是一个代理,它不会查看请求,而只是在用户代理使用HTTP CONNECT方法后将所有流量中继到实际的HTTPS服务器。这就是浏览器通常用于HTTPS请求的HTTP代理服务器的工作方式。

我没有尝试过,但你可以看看Jetty和它的ConnectHandler


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接