【问题标题】:Is it possible to have a forward proxy with ssl encryption between the proxy and the user?代理和用户之间是否可以使用 ssl 加密的转发代理?
【发布时间】:2012-04-23 21:43:36
【问题描述】:

首先,我想明确一点,我不是在谈论访问原始服务器上使用 https 传递的内容,这可以使用模块 mod_proxy_connect 完成。

我想要的是客户端和代理之间的安全连接,即使请求的源实际上是由不安全的标准 http 服务器提供服务时也是如此。

我正在使用 apache 2.2,如果可行的话,我也希望使用 apache 来实现这一点。

我使用wireshark嗅探了一些请求,并注意到以下几点:

网址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 地址。

按照目前的标准,我想实现的目标是否可行?如果可以,我该怎么做?

【问题讨论】:

  • 这与几个小时前 Security.SE 上其他人提出的this one 的问题大致相同。

标签: apache http ssl https proxy


【解决方案1】:

是的,当然,这就是 HTTPS 代理。

客户端通过 SSL 连接到代理,以文本形式向代理发送命令。

也可以使用 HTTP CONNECT 在 SSL 连接“内部”与 HTTPS 代理建立 HTTPS 连接,但并非所有客户端都支持:

HTTPS connection over HTTPS proxy
client           proxy           server
ssl    \-------/   ssl
connect---------200 OK
ssl  \---------------------------/ ssl
data-------------------------------data
     /---------------------------\
       /-------\



HTTP connection over HTTPS proxy
client           proxy           server
ssl    \-------/   ssl
GET http://server/ ->
                       GET / 
                       Host: server ->
                       <---------OK, data
<--------------OK, data
       /-------\

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多