如何在不破坏客户端和服务器之间的 https 隧道的情况下配置 apache 反向代理?

Posted

技术标签:

【中文标题】如何在不破坏客户端和服务器之间的 https 隧道的情况下配置 apache 反向代理?【英文标题】:How apache reverse proxy can be configured without breaking the https tunnel between client & server? 【发布时间】:2014-09-03 12:06:15 【问题描述】:

我已经配置了 apache 反向代理。在该配置中,客户端到反向代理和反向代理到服务器之间可以建立 https 连接。但我想要客户端到服务器之间的 https 连接,比如转发代理。 https 连接不应在反向代理处断开。

     Https tunnel                   New Https tunnel
    <===============>             <===================>

客户端-----------Apache 反向代理 -------------------- --------服务器

上述解决方案不可取。

                  Https Tunnel
   <========================================>

客户端--------Apache 反向代理----服务器

上述解决方案是可取的。

如果端到端 https 隧道在反向代理中是不可能的,那么如何确保 ssl 代理选项是安全的,甚至反向代理管理员(如果反向代理受到威胁)也无法解密隧道或中间人攻击做不到。

【问题讨论】:

这个问题似乎离题了,因为它与编程无关。请参阅帮助中心的What topics can I ask about here。也许Server Fault 或Webmaster Stack Exchange 会是一个更好的提问地点。 你不能。您可以在较低级别实现负载均衡器(例如通过ipchains)。 【参考方案1】:

你不能。因为 HTTPS 通过设计保证发送者通过证书与接收者对话。您在这里的代理人将是“中间人”:-)

见http://en.wikipedia.org/wiki/Reverse_proxy

在安全网站的情况下,网络服务器可能不执行 SSL 加密本身,而是将任务卸载到反向代理 可能配备 SSL 加速硬件。 (见 SSL 终止代理。)

你能做什么

Client------Apache Reverse proxy----SC--------------SS---------Server
            HTTPS                           SSL           HTTP        
            (listen to 443)          

其中 SC = Stunnel 客户端,SS = Stunnel 服务器

SC 必须与您的 apache 反向代理在同一台机器上运行,而 SS 必须在您的服务器目标中运行。

【讨论】:

以上是关于如何在不破坏客户端和服务器之间的 https 隧道的情况下配置 apache 反向代理?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不破坏范式的情况下为多对多关系构建连接表

如何在不破坏 Subversion 历史的情况下重命名 Java 包?

在 Python 中模拟 SSH 的 SOCKS 代理隧道

基于 JSCH (SSH) 和 HTTPS 的反向隧道

隧道模式的使用 IPSec 隧道

nginx正向代理https