【发布时间】:2012-05-13 12:25:27
【问题描述】:
JVM 允许使用代理属性 http.proxyHost 和 http.proxyPort 来指定 HTTP 代理服务器,并允许使用 https.proxyHost 和 https.proxyPort 来指定 HTTPS 代理服务器。
我想知道与 HTTP 代理服务器相比,使用 HTTPS 代理服务器是否有任何优势?
通过 HTTPS 代理访问 https url 是否比通过 HTTP 代理访问更方便?
【问题讨论】:
JVM 允许使用代理属性 http.proxyHost 和 http.proxyPort 来指定 HTTP 代理服务器,并允许使用 https.proxyHost 和 https.proxyPort 来指定 HTTPS 代理服务器。
我想知道与 HTTP 代理服务器相比,使用 HTTPS 代理服务器是否有任何优势?
通过 HTTPS 代理访问 https url 是否比通过 HTTP 代理访问更方便?
【问题讨论】:
HTTP 代理收到一个纯文本请求,并且 [在大多数但不是所有情况下] 向远程服务器发送不同的 HTTP 请求,然后将信息返回给客户端。
HTTPS 代理是一个中继器,它接收特殊的 HTTP 请求(CONNECT 动词)并建立一个到目标服务器(甚至不一定是 HTTPS 服务器)的不透明隧道。然后客户端向服务器发送 SSL/TLS 请求,他们继续 SSL 握手,然后使用 HTTPS(如果请求)。
如您所见,这是两种完全不同的代理类型,具有不同的行为和不同的设计目标。 HTTPS 代理无法缓存任何内容,因为它看不到发送到服务器的请求。使用 HTTPS 代理,您有一个通往服务器的通道,客户端接收并验证服务器的证书(反之亦然)。另一方面,HTTP 代理可以查看并控制它从客户端收到的请求。
虽然 HTTPS 请求可以通过 HTTP 代理发送,但这几乎永远不会完成,因为在这种情况下,代理将验证服务器的证书,但客户端将能够接收和验证仅代理的证书,并且作为代理证书中的名称将与套接字连接的地址不匹配,在大多数情况下会发出警报并且 SSL 握手不会成功(我不会详细说明如何尝试解决这个问题)。
最后,由于 HTTP 代理可以查看请求,这使 HTTPS 通道提供的安全性概念无效,因此对 HTTPS 请求使用 HTTP 代理通常仅出于调试目的(同样我们省略了偏执的公司安全策略的情况需要监控公司员工的所有 HTTPS 流量)。
补充:另请阅读我对类似主题的回答here。
【讨论】:
youtube-dl.exe --proxy "http://proxy.com:8080/" https://www.youtube.com/watch?v=XzZJuEDQ1a0
没有优点或缺点。 并且没有“HTTPS 代理”服务器。
您可以告诉协议处理程序将哪个代理服务器用于不同的协议。这可以为http、https、ftp 和socks 完成。不多也不少。
我不能告诉你是否应该为 https 连接使用不同的代理。这取决于。 我只能解释一下对代理的http和https请求的区别。
由于 HTTP 代理(或 Web 代理)理解 HTTP(因此得名),因此客户端可以将请求发送到代理服务器而不是实际的目标。
这不对HTTPS 有效。
这是因为代理无法进行最初发生的 TLS 握手。
因此客户端必须向代理发送CONNECT 请求。
代理建立 TCP 连接,只是在不接触它们的情况下来回发送包。
因此 TLS 握手发生在客户端和目标之间。
HTTP 代理服务器不查看所有内容并且不验证目标服务器证书。
这整个 http、https、代理可能会有些混乱。 可以使用 https 将 连接到 HTTP 代理。 在这种情况下,客户端和代理之间的通信是加密的。
还有所谓的TLS terminating 或interception 代理服务器,如Squid's SSL Peek and Splice 或burp,可以查看所有内容。
但这不应该开箱即用,因为代理使用自己的证书,这些证书没有由受信任的 CA 签名。
【讨论】:
如果您的意思是通过 HTTPS 代理 通过 TLS 连接到 HTTP 代理服务器,那么
我想知道使用 HTTPS 是否有任何优势 代理服务器与 HTTP 代理服务器相比?
优点是您的客户端与代理服务器的连接是加密的。例如。防火墙看不到你使用CONNECT方法连接到哪个主机。
通过 HTTPS 代理访问 https url 没有那么麻烦 从 HTTP 代理访问它?
除了使用 HTTPS 代理,浏览器到代理服务器的连接是加密的之外,一切都相同。
但您需要在代理服务器上部署证书,就像 https 网站一样,并使用pac 文件配置浏览器以启用通过 SSL 连接到代理。
更多细节和实际例子,请查看我的问答HTTPs proxy server only works in SwitchOmega
【讨论】: