首先,我想明确一点,我不是在谈论访问原始服务器上使用 https 传递的内容,这可以使用模块 mod_proxy_connect 完成。
我想要的是客户端和代理之间的安全连接,当实际请求的源由不安全的标准 http 服务器提供服务时也是如此。
我正在使用 apache 2.2,如果可行的话,我也希望使用 apache 来实现这一点。
我使用wireshark嗅探了一些请求并注意到以下内容:
url http://example.com/file的普通 http看起来像这样:
在与源服务器的连接上:
GET /file HTTP 1.1
Host: example.com
请注意,主机信息已从实际请求中剥离,而是提供主机标头(可以在命名虚拟主机中的服务器端处理)。
当请求通过代理服务器时,它看起来略有不同:
在与代理服务器的连接上:
GET http://example.com/file HTTP 1.1
Host: example.com
请注意,请求行现在实际上包含完整的 url,包括协议和主机名。如果我正确阅读了 RFC,则主机标头可能是多余的总线,它是 HTTP 1.1 所要求的。
所以我考虑设置一个监听端口 443 的 apache 网络服务器,启用一个带有 ssl 引擎和证书的虚拟主机,并且不要将它绑定到任何主机名。
我认为这应该让 apache 谈论 ssl,但是证书公用名将与连接行中指定的主机不匹配到代理服务器 ip 地址。
我想用目前的标准实现什么?如果可以,我该怎么做?