是否可以通过代理服务器建立 HTTPS 连接?如果是,什么样的代理服务器允许这样做?
最佳答案
TLS/SSL(HTTPS 中的 S)保证您和您正在联系的服务器之间没有窃听者,即没有代理。通常,您使用 CONNECT
通过代理打开 TCP 连接。在这种情况下,代理将无法缓存、读取或修改任何请求/响应,因此毫无用处。
如果您希望代理能够读取信息,可以采取以下方法:
- 客户端启动 HTTPS session
- 代理透明地拦截连接并 返回临时生成的(可能 弱)证书 Ka, 由证书颁发机构签名 是无条件信任的 客户。
- 代理启动到目标的 HTTPS session
- 代理验证 SSL 的完整性 证书;如果出现以下情况,则显示错误 证书无效。
- 代理传输内容并解密 并用它重新加密 Ka
- 客户端显示内容
一个例子是 Squid 的 SSL bump 。同样,打嗝can be configured去做这个。这也已经used in a less-benign context by an Egyptian ISP .
请注意,现代网站和浏览器可以使用 HPKP或built-in certificate pins这击败了这种方法。
关于proxy - 通过代理服务器的 HTTPS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516323/