Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 在软件NLB';d IIS7簇_Networking_Iis 7_Https_Ssl Certificate - Fatal编程技术网

Networking 在软件NLB';d IIS7簇

Networking 在软件NLB';d IIS7簇,networking,iis-7,https,ssl-certificate,Networking,Iis 7,Https,Ssl Certificate,我们目前正在尝试使用多个证书设置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路由到这些

我们目前正在尝试使用多个证书设置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:port:0.0.0.0:443
证书哈希:
IP:端口:10.0.51.2:446
证书哈希:
IP:端口:10.0.51.3:446
证书哈希:
IP:端口:10.0.51.4:443
证书哈希:
这告诉我,*绑定仍然存在,这有点奇怪,但我不明白为什么这会阻止另一个工作(或者更奇怪的是,为什么通过路由器的请求会工作)

这让我怀疑它是否真的将请求视为机器的IP而不是NLB IP,但不幸的是,我们的开发环境只是一台服务器,这在某种程度上减少了我对此的尝试/错误次数(因为我只能在一个实时环境中进行测试)没有说服管理层为测试环境购买更多服务器——这是我正在尝试的

有没有人知道:

  • 为什么内部和通过路由器之间存在差异
  • 为什么内部请求获得错误的证书
  • 我怎样才能补救这一点,使我们双方都有相同的行为

  • 我最终找到了问题所在。把这句话作为一个提示给其他落入同一陷阱的人

    问题是由我们在IIS服务器上使用共享配置模型引起的。设置HTTPS绑定时,这似乎只会将其实际绑定到您正在管理它的框上(另一个框完全未绑定)。由于我们的*绑定仍然存在,它在服务器上捕获它,我们没有通过UI,只是让它获取共享配置

    单亲和力NLB带来的坏运气让我们走上了花园之路,因为路由器使我们的内部请求转到一台服务器,而外部请求转到另一台服务器

    我们最终通过在两台服务器上运行“netshhttpshowsclcert>certs.txt”并区分输出来发现这一点

    今后,我们的计划是不再使用IIS UI进行SSL配置,而是按照以下步骤进行:

  • 在每台服务器上安装证书
  • 运行SSL端口“netsh http add sslcert ipport=?:?certhash=?appid=?”的命令行绑定(ip:端口很容易计算,certhash可以从服务器证书页的“证书哈希”部分复制,appid可以从netsh http add sslcert上的现有IIS绑定复制)
  • 直接编辑IIS ApplicationHost.config文件以添加绑定,而不涉及UI
  • 我们的理解是,这将防止这种错误再次发生