JVM 允许代理属性 http.代理主机和 http.代理端口用于指定 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流量的偏执公司安全策略的情况)。
补充:也请在这里阅读我对类似主题的回答。
没有优劣之分。也没有“HTTPS代理”服务器。
您可以告诉协议处理程序为不同的协议使用哪个代理服务器。这可以用于超文本传输协议
、https
、ftp
和袜子
。不多也不少。
我无法告诉您是否应该为https连接使用不同的代理。视情况而定。我只能解释http和https对代理的请求的区别。
由于HTTP代理(或Web代理)理解HTTP
(因此得名),客户端可以将请求发送到代理服务器,而不是实际的去中心化。这不适用于HTTPS
。这是因为代理不能进行TLS握手,这种情况最初会发生。因此客户端必须向代理发送CONNECT
请求。代理建立传输控制协议,只需来回发送包而不接触它们。所以TLS握手发生在客户端和去中心化之间。HTTP代理服务器看不到一切,也不会验证去中心化服务器的证书。
整个超文本传输协议https代理可能会有些混乱。可以使用https连接到HTTP代理。在这种情况下,客户端和代理之间的通信是加密的。
也有所谓的TLS终止或拦截代理服务器,如Squid的SSL Peek和Splice或burp,它们可以看到一切。但这不应该开箱即用,因为代理使用自己的证书,这些证书没有被受信任的CA签名。
如果您的意思是通过 TLS 连接到 HTTP 代理服务器,则
我想知道与HTTP代理服务器相比,使用HTTPS代理服务器是否有任何优势?
优点是您的客户端到代理服务器的连接是加密的。例如,防火墙无法看到您使用< code>CONNECT方法连接到哪个主机。
通过HTTPS代理访问https url是否比从HTTP代理访问它更麻烦?
一切都是一样的,除了使用HTTPS代理,浏览器到代理服务器的连接是加密的。
但您需要在代理服务器上部署证书,就像https网站一样,并使用pac
文件配置浏览器,以启用通过SSL连接到代理。
有关更多详细信息和实际示例,请在此处查看我的问答HTTPs代理服务器仅适用于SwitchOmega