我们正在尝试设置具有多个证书的HTTPS。我们取得了一些有限的成功,但我们得到了一些我无法理解的结果...软件NLB'd IIS7集群上的HTTPS的多个证书
基本上我们在NLB(10.0.51.51和10.0.51.52)上有两台服务器,并且分配了两个IP到我们的NLB(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显示的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,但不幸的是,我们的开发环境只是一台服务器,它减少了我可以对此尝试/错误的数量我所能测试的只是一个现场环境),而没有说服管理层为测试环境购买更多服务器 - 这是我正在尝试的。
没有人有任何的想法:
- 为什么有内部和之间通过路由器有区别吗?
- 为什么内部请求得到错误的证书?
- 我该如何解决这个问题,以便我们在双方都能得到相同的行为?