【问题标题】:How to ensure a secure connection using a reverse proxy to an external server?如何使用反向代理确保与外部服务器的安全连接?
【发布时间】:2018-03-27 13:49:37
【问题描述】:

猜猜这是我开头的唯一一篇文章:“我的 SSL 连接有效,但我不知道为什么”。 我有一个设置,其中域名和通配符证书位于服务器 A 上,我想使用该域的子域将请求代理到 Internet 上另一台机器上的服务器 B。服务器 B 目前只能通过 IP 访问,所以我实际上没想到这会起作用,因为 SSL 证书是基于域名的。

我的设置如下(示例):

  • 服务器 A 域:www.production.io
  • 服务器 A 子域:cus1.production.io
  • 服务器B IP:65.23.523.12

cus1.production.io 的 http 的 Apache 配置:

RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost On
Redirect / https://cus1.production.io/

cus1.production.io 的 https 的 Apache 配置:

ProxyPass / http://65.23.523.12/
ProxyPassReverse / http://65.23.523.12/

调用 cus1.production.io 会在 65.23.523.12 上显示应用程序,但在浏览器中具有安全连接(绿色锁),尽管 服务器 B 上的网络服务器不提供 https 连接,也不提供 SSL 证书。

虽然客户端和“代理”服务器 A 之间的连接是安全的,但传输到实际应用程序的数据却不是。所以这实际上是一个骗局。

问题:如何确保在服务器 A 和服务器 B 之间应用安全连接?

【问题讨论】:

    标签: apache ssl https proxy reverse-proxy


    【解决方案1】:

    这并不是真正的“欺诈”,只是浏览器和服务器A之间保证了SSL/TLS连接。浏览器与服务器B无关:服务器A是服务器B的客户端。

    如果可以,请在服务器 B 上设置 SSL/TLS。即使它只能通过 IP 地址访问,您也可以创建内部 CA 或自签名证书。 (该证书应该在 IP 地址 类型的 SAN 条目中包含此 IP 地址。)

    然后,您可以使用 mod_ssl's SSLProxy* 选项来配置 Apache Httpd(在服务器 A 上)如何作为服务器 B 的客户端(即当它是反向代理时)。

    通常,您需要设置 SSLProxyCACertificateFile(指向您的内部 CA 证书或自签名证书)并使用 SSLProxyCheckPeerName

    【讨论】:

    【解决方案2】:

    简而言之,由您来确定。

    您刚才描述的是一种配置 SSL 设置的常用方法,其中您有一组服务器来处理与浏览器的安全连接,然后它们将请求代理到另一台服务器,通常只使用 http。这被称为ssl termination

    此连接通常在安全网络中完成,托管证书的服务器可以从 Internet 访问,但它们转发到的服务器不是,因此它们不会通过 Internet 代理返回。但是,如果您的服务器配置不正确,理论上没有什么可以防止这种情况发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多