【问题标题】:Pros and cons of using a Http proxy v/s https proxy?使用 Http 代理与 https 代理的优缺点?
【发布时间】:2012-05-13 12:25:27
【问题描述】:

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

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

通过 HTTPS 代理访问 https url 是否比通过 HTTP 代理访问更方便?

【问题讨论】:

    标签: http https proxy


    【解决方案1】:

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

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

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

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

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

    补充:另请阅读我对类似主题的回答here

    【讨论】:

    • 优秀的答案。所以我正在使用 http 代理(burp 代理服务器)进行测试。我正在通过它发送 https 请求。代理能够连接到 https url 并执行 url,但是正如您提到的那样,它正在发回代理证书,并且我的 Java 客户端(具有 jvm 设置中指定的代理的基本 HTTPUrlConnection)无法验证它。所以如果我使用的是 HTTPS 代理,这个问题应该会自动解决?
    • @Zenil 是的,因为客户端和服务器之间的通信将是直接的(在建立隧道之后)。
    • HTTP 代理这个术语是否包含潜在的支持 SSL / HTTPS?即所谓的HTTP代理现在可以HTTPS和做.. HTTPS代理真的是一个使用很多的术语吗?
    • @barlop 鉴于两者的工作原理不同,即使合并到一个软件中,它们仍然是两个不同的东西。
    • 您是否同意在连接到 https 代理时使用 http:// ?还是不是真的只是纯文本而不是专门的http? youtube-dl 的语法为 --proxy URL,例如我认为youtube-dl.exe --proxy "http://proxy.com:8080/" https://www.youtube.com/watch?v=XzZJuEDQ1a0
    【解决方案2】:

    没有优点或缺点。 并且没有“HTTPS 代理”服务器。

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

    我不能告诉你是否应该为 https 连接使用不同的代理。这取决于。 我只能解释一下对代理的http和https请求的区别。

    由于 HTTP 代理(或 Web 代理)理解 HTTP(因此得名),因此客户端可以将请求发送到代理服务器而不是实际的目标。 这HTTPS 有效。 这是因为代理无法进行最初发生的 TLS 握手。 因此客户端必须向代理发送CONNECT 请求。 代理建立 TCP 连接,只是在不接触它们的情况下来回发送包。 因此 TLS 握手发生在客户端和目标之间。 HTTP 代理服务器查看所有内容并且验证目标服务器证书。

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

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

    参考文献

    【讨论】:

    • 如果您的意思是通过 TLS 连接到 HTTP 代理服务器,则存在“HTTPS 代理”。看我的回答。
    【解决方案3】:

    如果您的意思是通过 HTTPS 代理 通过 TLS 连接到 HTTP 代理服务器,那么

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

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

    通过 HTTPS 代理访问 https url 没有那么麻烦 从 HTTP 代理访问它?

    除了使用 HTTPS 代理,浏览器到代理服务器的连接是加密的之外,一切都相同。

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

    更多细节和实际例子,请查看我的问答HTTPs proxy server only works in SwitchOmega

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 2012-03-05
      • 2023-03-15
      • 2017-07-17
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2015-12-12
      相关资源
      最近更新 更多