【发布时间】:2009-11-22 01:09:18
【问题描述】:
我们目前正在尝试设置具有多个证书的 HTTPS。我们取得了一些有限的成功,但我们得到了一些我无法理解的结果......
基本上,我们的 NLB 上有两台服务器(10.0.51.51 和 10.0.51.52)和分配给 NLB 的两个 IP(10.0.51.2 和 10.0.51.4),我们让 IIS 使用不同的通配符监听这两个 IP证书(为了避免提供公共 IP,假设 A:443 路由到 10.0.51.2:443 和 B:443 路由到 10.0.51.4:443)。我们还有一个 Cisco 路由器,它使用端口地址转换将端口 443 从两个外部 IP 路由到这些内部 NLB IP。
奇怪的是,如果我们请求 A:443 或 B:443,这可以工作,但如果您在内部访问 10.0.51.51:443、10.0.51.52:443、10.0.51.2:443 或 10.0.51.4:443您总是获得相同的 SSL 证书。此证书过去分配给 *:443,但我们已确保 IIS 中不再定义 * 绑定。
当我在删除所有不相关的内容后运行“netsh http show sslcert”时:
IP:port : 0.0.0.0:443
Certificate Hash : <Removed: Cert 1>
IP:port : 10.0.51.2:446
Certificate Hash : <Removed: Cert 3 - Another site>
IP:port : 10.0.51.3:446
Certificate Hash : <Removed: Cert 3 - Another site>
IP:port : 10.0.51.4:443
Certificate Hash : <Removed: Cert 2>
这告诉我 * 绑定仍然在那里,这有点奇怪,但我不明白为什么这会阻止另一个工作(或者更奇怪的是为什么通过路由器的请求会工作) .
这让我想知道它是否实际上将请求视为机器的 IP 而不是 NLB IP,但不幸的是,我们的开发环境只是一个服务器,它减少了我可以对此进行的试验/错误的数量(因为所有我可以在实际环境中进行测试),而无需说服管理层为测试环境购买更多服务器 - 这是我正在尝试的事情。
有人知道吗:
- 为什么内部路由器和通过路由器之间存在差异?
- 为什么内部请求获得了错误的证书?
- 我该如何解决这个问题,以便我们在双方都获得相同的行为?
【问题讨论】:
标签: networking iis-7 https ssl-certificate