JVM允许代理属性http.proxyHost和http.proxyPort用于指定HTTP代理服务器,https.proxyHost和https.proxyPort用于指定HTTPS代理服务器.
我想知道使用HTTPS代理服务器与HTTP代理服务器相比是否有任何优势?
通过HTTPS代理访问https url比从HTTP代理访问它更麻烦吗?
Eug*_*its 36
HTTP代理获取纯文本请求,[在大多数情况下但并非所有情况下]向远程服务器发送不同的HTTP请求,然后将信息返回给客户端.
HTTPS代理是一个中继器,它接收特殊的HTTP请求(CONNECT动词)并构建到目标服务器(不一定是HTTPS服务器)的不透明隧道.然后客户端向服务器发送SSL/TLS请求,然后继续SSL握手,然后使用HTTPS(如果请求).
如您所见,这是两种完全不同的代理类型,具有不同的行为和不同的设计目标.HTTPS代理无法缓存任何内容,因为它看不到发送到服务器的请求.使用HTTPS代理,您有一个到服务器的通道,客户端接收并验证服务器的证书(反之亦然).另一方面,HTTP代理查看并控制从客户端收到的请求.
虽然HTTPS请求可以通过HTTP代理发送,但这几乎从未完成,因为在这种情况下代理将验证服务器的证书,但客户端将能够仅接收和验证代理的证书,并且代理证书中的名称将不匹配套接字所连接的地址,在大多数情况下会发出警报并且SSL握手不会成功(我不会详细介绍如何解决此问题).
最后,由于HTTP代理可以查看请求,这会使HTTPS通道提供的安全性失效,因此使用HTTP代理进行HTTPS请求通常仅用于调试目的(同样我们省略了需要监视的偏执公司安全策略的情况)公司员工的所有HtTPS流量).
另外:也看过我对类似题目的答案在这里.
不幸的是,“HTTPS 代理”有两个不同的含义:
如果浏览器尝试使用 HTTPS 连接到网站,浏览器将向代理发送 CONNECT 请求,代理将与网站建立 TCP 连接,并将该连接上从浏览器发送的所有 TCP 流量镜像到将代理发送到代理与网站之间的连接,并类似地将来自网站的响应 TCP 数据包负载镜像到与浏览器的连接。假设,使用 CONNECT 的相同机制可以用于 HTTP 流量,但实际上浏览器不会这样做。对于 HTTP 流量,它们将实际的 HTTP 请求发送到代理,包括 HTTP 命令中的完整路径(以及设置标Host头): https: //stackoverflow.com/a/38259076/10026
因此,根据这个定义,HTTPS 代理是一个理解 CONNECT 指令并可以支持浏览器和网站之间 HTTPS 流量的代理。
在此模式下(有时称为“安全代理”),浏览器使用代理自己的证书与代理执行 TLS 握手,然后按照 ( 1)。因此,浏览器和代理之间的连接始终受到使用代理证书派生的 TLS 密钥的保护,无论流量本身是否使用浏览器和网站之间协商的密钥进行加密。如果 HTTPS 流量通过安全代理进行代理,则在浏览器和代理之间的连接上会进行双重加密。
例如,Proxy Switcher Chrome 插件有两个单独的设置来控制这些功能:
自 2022 年起,使用安全代理的选项在 MacOS 和 Windows 手动代理配置 UI 中不可用。但是可以使用HTTPS代理指令在自动代理配置中使用的 PAC 文件中指定安全代理。由消费应用程序支持 HTTPS 指令;大多数主要浏览器(Safari 除外)和许多桌面应用程序都支持它。
注意:事情变得有点复杂,因为一些代理 HTTPS 流量的代理并不简单地转发 TCP 数据包负载(如 (1) 中所述),而是充当拦截代理。使用欺骗性的网站证书,他们可以有效地执行中间人攻击(嗯,这不一定是攻击,因为它是预期的行为)。虽然浏览器认为它正在使用网站的证书与网站建立 TLS 隧道,但它实际上是使用欺骗证书与代理建立 TLS 隧道,而代理则与网站建立 TLS 隧道。然后代理可以查看 HTTPS 请求/响应。但所有这些都与代理是否按照 (2) 充当安全代理完全无关。
没有优点或缺点。而且没有“ HTTPS代理”服务器。
您可以告诉协议处理程序哪个代理服务器用于不同的协议。这是可以做到的http,https,ftp和socks。不多也不少。
我无法告诉您是否应为https连接使用其他代理。这取决于。我只能解释对代理的http和https请求的区别。
由于HTTP代理(或Web代理)可以理解HTTP(因此有其名称),因此客户端只需将请求发送到代理服务器即可,而不是实际的目的地。这并没有对工作HTTPS。这是因为代理无法进行TLS握手,该握手最初会发生。因此,客户端必须向CONNECT代理发送请求。代理建立一个TCP连接,只发送来回的包而不会碰它们。因此,TLS握手发生在客户端和目标之间。HTTP代理服务器并没有看到一切,确实没有验证destenation服务器证书任何责任。
整个http,https,代理的内容可能会有些混乱。可以使用https 连接到 HTTP代理。在这种情况下,客户端和代理之间的通信将被加密。
还有所谓的TLS terminating或interception代理服务器,例如Squid的SSL Peek和Splice或burp,它们可以看到所有内容。但这不应该立即可用,因为代理使用自己的证书,这些证书不是由受信任的CA签名的。
如果您的意思是通过说HTTPS 代理通过 TLS 连接到 HTTP 代理服务器,那么
我想知道与 HTTP 代理服务器相比,使用 HTTPS 代理服务器是否有任何优势?
优点是您的客户端与代理服务器的连接是加密的。例如,防火墙看不到您使用CONNECT方法连接到的主机。
通过 HTTPS 代理访问 https url 是否比从 HTTP 代理访问它更麻烦?
除了使用 HTTPS 代理之外,一切都相同,浏览器到代理服务器的连接是加密的。
但是你需要在你的代理服务器上部署一个证书,就像一个 https 网站所做的那样,并使用一个pac文件来配置浏览器以启用通过 SSL 连接到代理。
有关更多详细信息和实际示例,请在此处查看我的问题和答案HTTPS 代理服务器仅适用于 SwitchOmega
| 归档时间: |
|
| 查看次数: |
18748 次 |
| 最近记录: |