我应该如何在 Windows 上设置带有 SSL 的反向代理?

我应该如何在 Windows 上设置带有 SSL 的反向代理?

这里有两个基本问题:

如果我想通过反向代理(P)从 3 个不同的服务器(A、B、C)提供 SSL 内容,那么 SSL 魔法在哪里发生?

我猜想每台服务器都会负责处理 SSL 事务,而 X 只会路由这些位,但我不确定。在这种情况下,我大概会在每台机器 A、B、C 上使用为 X 签名的相同证书。或者 X 会自行处理所有 SSL 事务?

其次,Windows Server 2008 上用于反向代理的最佳 Web 服务器是什么?IIS、Apache 等。如果您有设置示例并附上推荐,则可获得额外加分。

感谢您的帮助!

答案1

我假设“反向代理”是指 Apahce 服务器充当代理而不是 DNAT(目标 NAT)。在这种情况下,您的客户端会将具有内部 IP(IA、IB、IC)的服务器(A、B、C)视为外部或公共 IP 设备(XA、XB、XC)。

另一方面,如果您希望将您的 (IA、IB、IC) 设备表示为单个外部 IP (XIP),则需要使用包含多个主题备用名称的 SSL 证书。事实上,如果您只有一个公共 IP,并且想要针对该公共 IP 建立多个 SSL 站点,则无论是否进行反向代理,您都需要使用具有多个主题备用名称的证书。该属性在 X.500 领域中称为“SubjAltName”。

这个链接也许能帮到你: http://www.wlug.org.nz/ApacheReverseProxy

除非您的 DNAT 知道如何处理 SSL 证书,否则您实际上无法 DNAT HTTPS 连接 - 您基本上是在创建一个 MITM(中间人)过程;这是 SSL 试图保护的事物之一。

答案2

我引用我们优秀的 CMS 支持人员的话

“需要考虑的是在哪里进行 SSL 终止

换句话说,请求将以 https 的形式从客户端发送到代理,然后以 http 的形式从代理发送到内部框,您将在内部框中让 apache 终止 SSL

或者

整个对话都是 SSL

我倾向于第一个选项,即让 Apache 终止 SSL,因为没有必要将整个对话作为 https

我会将证书放在虚拟主机指令内的 apache 服务器上,然后将该请求代理到内部框。”

换句话说,但更容易避免在您自己的网络上进行内部加密。

据我所知,IIS 不支持反向代理(当然,直到 IIS 6 为止,不确定以后是否支持),所以只能使用 Apache。您也可以使用 SQUID,虽然我没有直接使用过,但它似乎不错。

另请参阅我在 StackOverflow 上的问题 (https://stackoverflow.com/questions/283636/apache-reverse-proxy-set-up-ssl-certificate)有关 Apache 的正确配置。

答案3

您可以设置 Microsoft ISA 服务器作为 SSL 的反向代理。然后,这会将端口 80 上的流量转发到位于另一台服务器上的 IIS。如果您想使用通配符证书,这也将起作用。我相信您也可以使用它来进行负载平衡。

相关内容