使用Http代理v / s https代理的优缺点?

时间:2012-05-03 23:21:01

标签: http https proxy

JVM允许代理属性http.proxyHost和http.proxyPort用于指定HTTP代理服务器,https.proxyHost和https.proxyPort用于指定HTTPS代理服务器。

我想知道使用HTTPS代理服务器与HTTP代理服务器相比是否有任何优势?

通过HTTPS代理访问https网址比从HTTP代理访问它更麻烦吗?

3 个答案:

答案 0 :(得分:31)

HTTP代理获取纯文本请求,[在大多数情况下但并非所有情况下]向远程服务器发送不同的HTTP请求,然后将信息返回给客户端。

HTTPS代理是一个中继器,它接收特殊的HTTP请求(CONNECT动词)并构建到目标服务器(甚至不一定是HTTPS服务器)的不透明隧道。然后客户端向服务器发送SSL / TLS请求,然后继续SSL握手,然后使用HTTPS(如果请求)。

如您所见,这是两种完全不同的代理类型,具有不同的行为和不同的设计目标。 HTTPS代理无法缓存任何内容,因为它看不到发送到服务器的请求。使用HTTPS代理,您有一个到服务器的通道,客户端接收并验证服务器的证书(反之亦然)。另一方面,HTTP代理查看并控制从客户端收到的请求。

虽然可以通过HTTP代理发送HTTPS请求,但这几乎从未完成,因为在这种情况下代理将验证服务器的证书,但客户端将能够仅接收和验证代理的证书,并作为代理证书中的名称将与套接字连接的地址不匹配,在大多数情况下会发出警报并且SSL握手不会成功(我不会详细介绍如何解决此问题)。

最后,由于HTTP代理可以查看请求,这会使HTTPS通道提供的安全性失效,因此使用HTTP代理进行HTTPS请求通常仅用于调试目的(同样我们省略了偏执公司安全策略的情况,要求监控公司员工的所有HtTPS流量。

另外:还请阅读我对类似主题here的回答。

答案 1 :(得分:2)

没有任何利弊。 并且没有" HTTPS代理"服务器

您可以告诉协议处理程序哪个代理服务器用于不同的协议。这可以针对httphttpsftpsocks完成。不多也不少。

我无法告诉您是否应该使用不同的代理进行https连接。这取决于。 我只能解释http和https请求与代理的区别。

由于 HTTP代理(或Web代理)理解HTTP(因此名称),客户端只能将请求发送到代理服务器而不是实际的destenation。 这对HTTPS 无效。 这是因为代理无法进行TLS握手,这首先发生。 因此,客户端必须向代理发送CONNECT请求。 代理建立TCP连接,只是前后发送包而不触及它们。 所以TLS握手发生在客户端和destenation之间。 HTTP代理服务器看到所有内容,验证destenation服务器证书。

整个http,https,代理事情可能会有些混乱。 可以使用https将连接到 HTTP代理。 在这种情况下,客户端与代理之间的通信将被加密。

还有所谓的TLS terminatinginterception代理服务器,例如Squid's SSL Peek and Spliceburp看到所有内容。 但这不应该是开箱即用的,因为代理使用自己的证书,而这些证书不是由受信任的CA签名的。

参考

答案 2 :(得分:0)

如果您是说 HTTPS代理,则表示通过TLS连接到HTTP代理服务器,则

  

我想知道使用HTTPS是否有任何优势   代理服务器与HTTP代理服务器相比?

优点是您的客户端与代理服务器的连接已加密。例如。防火墙无法看到您使用CONNECT方法连接到的主机。

  

通过HTTPS代理访问https网址的麻烦性小于   从HTTP代理访问它?

除了HTTPS代理外,其他所有内容都相同,对浏览器到代理服务器的连接被加密。

但是您需要像https网站一样在代理服务器上部署证书,并使用pac文件将浏览器配置为启用通过SSL连接到代理

有关更多详细信息和实际示例,请在HTTPs proxy server only works in SwitchOmega

处查看我的问题和答案。