我们有一个带 SSL 的 Cisco CSM-S 内容交换机。目前我们的网站位于此交换机后面,该交换机为 HTTP 和 SSL 站点执行负载平衡。http 和 https 站点使用不同的主机名
***** http://www.site.com=>* *==>主服务器 * C * * 年代 * * 米 * https://secure.site.com=>* *==>Ecom 服务器 *****
SSL 流量由 CSM 中的 SSL 子卡解密,然后根据 HTTP 主机名通过 URL 将流量路由到各个服务器。我想为主站点添加非电子商务安全页面的 HTTPS 支持,但我的管理员说 CSM 无法以这种方式路由流量。这是我计划的配置:
***** http://www.site.com=>* *=(http)=>主服务器 https://www.site.com=>* C * * 年代 * * 米 * https://secure.site.com=>* *=(http)=>Ecom 服务器(安全网络) *****
据我理解,SSL 子卡应该在 HTTP 路由下的一层运行,因此主站点的安全页面和非安全页面都转到相同的内部服务器这一事实应该允许该配置正常工作。
有人知道 CSM-S 是否支持此配置吗?如果支持,我该如何向管理员描述如何设置?
答案1
如果 www.site.com 和 secure.site.com 解析为不同的 IP 地址,我看不出这会有什么问题。我们有一个非 SSL CSM,今天就这么做。CSM-S 的主要附加功能是可以查看 SSL 数据包,以实现负载平衡和硬件 SSL 终止。
如果网站解析到同一个 IP 地址,那么您的管理员说得对,这将是一个问题。这与在没有 CSM-S 的情况下尝试在单个 Web 服务器上托管这两个不同的 SSL 网站没有任何区别。使用 HTTPS,服务器必须协商 SSL,然后客户端才有机会告诉服务器它想要哪个网站。如果您有一个常规的单主机证书,并且服务器(或 CSM-S)必须为单个 IP 上的多个站点使用 SSL,它将无法知道要向客户端提供哪个证书。
据我所知,有三种方法可以在单个 IP 上支持多个基于名称的 SSL 站点:
- 用一个通配符证书。要实现此功能,所有站点必须位于同一个域中。
- 用一个主题备用名称(SAN) 证书,有时称为 UCC 或统一通信证书,因为 Microsoft OCS 显然倾向于使用多个主机名。这里唯一真正的限制是大多数颁发者会限制每个证书的站点数量。
- 使用服务器名称指示(SNI)在您的服务器上,它允许客户端在 TLS 协商期间请求站点名称。它在最新版本的 Apache 上受支持,尽管客户端支持情况参差不齐。但是,我认为 CSM-S 不支持 SNI,因此如果您在 CSM-S 上执行 SSL 终止,那么它无论如何都不是您的选择。
如果您还没有这样做,那么在不同的 IP 地址上运行 www.site.com 和 secure.site.com 可能是最简单的做法。如果 CSM-S 可以基于 Host: 标头而不仅仅是 ip:port 进行负载平衡,那么更改为两个站点共享的 SAN 或通配符证书是另一种选择。
答案2
在我打字的时候詹姆斯发了帖子...抢走了我的风头=)
我想补充一下詹姆斯的评论:
- 如果网站解析到同一个 IP 地址外部,这不一定是个问题,因为你可以配置一个策略来检查主机头。
- 如果后端是相同的服务器,那么仍然可以使用 James 提到的通配符证书,或者在不同的端口上运行服务器并在不同的服务器场中指定这些端口(实际上将它们视为完全不同的服务器)。
例子:
vserver FOOBAR
ip address 1.2.3.4 any
相对
vserver FOOBAR
ip address 1.2.3.4 tcp www
加
vserver FOOBAR_S
ip address 1.2.3.4 tcp https