如何在代理中使用 https URL 处理 POST/GET?

How to handle POST/GET with an https URL in proxy?

我写了一个很好用的代理服务器。但是在查看日志时,有一些奇怪的请求,例如:

POST https://vortex.data.microsoft.com/collect/v1 HTTP/1.1

还有一些 GET 通过 https。我认为 https 只允许 CONNECT,我错了吗?如果我错了,如何处理这些请求? (我刚刚在我的应用中删除了这些请求。)

另一件可能无关的事情是所有这些请求都与日志中的 microsoft 有关。

在代理中使用 HTTPS 处理任何 HTTP 方法 没有任何问题。

所有使用 https:// 协议的请求将被自动接收并发送到端口 443,如果没有另外说明。

独立地,如果您有一台服务器,其中部署了 HAProxyNGINXApache Web Server,或者您确实写了一个像 this one in JavaScript 这样的代理,那么您只有要做的就是将请求直接代理到目标服务器地址。


关于加密,恰恰HTTPS确保了客户端和实际目标之间没有窃听者,因此代理将充当初始目标,然后这将透明地拦截连接。

  1. 客户端启动与代理的 HTTPS 会话
  2. 代理拦截并returns其证书,由客户端信任的 CA 签名。
  3. 代理启动与目标的 HTTPS 会话
  4. 目标 returns 它的证书,由代理信任的 CA 签名。
  5. 代理流式传输内容,使用其证书解密和重新加密。

基本上它是两个 HTTPS 会话的串联,一个在客户端和代理之间,另一个在代理和最终目的地之间。