我最近设置了一个新的测试环境,其中包括一个负载均衡器,用于将 HTTPS 流量路由到单个 IIS 8 Web 服务器(一旦我解决了这个问题,就会添加更多)。IIS 8 Web 服务器通过未加密的连接与远程 SQL 服务器通信,凭据在 IIS web.config 文件中指定。
当我通过负载平衡器和正确的域名/ URL 连接到 Web 应用程序时,一切都运行良好。但是,如果我尝试跳过负载平衡器并直接访问 IIS 8 Web 服务器(通过 IP 地址),我可以看到我的 Web 应用程序尝试加载,但无法连接到远程 SQL Server,我无法登录。如果我在 IIS 8 服务器上禁用 HTTPS 支持,则不会发生此问题。
我的想法是,IIS 8 Web 服务器以某种方式导致远程 SQL Server 出现某种连接问题,因为 IIS 发现 SSL 证书与 URL 不匹配(因为我使用的是 IP 地址而不是实际域名)。这可能是问题所在吗?如果是,我能做些什么吗?
答案1
服务器,因为 IIS 发现 SSL 证书与 URL 不匹配(因为我使用的是 IP 地址而不是实际域名)。这可能是问题所在...
这可能是问题所在,因为为了正确验证证书,它会检查证书中的名称是否与连接时提供的名称相匹配。如果它不进行检查,任何拥有颁发给其自己网站的证书的人都可以冒充您的服务器,这可能不是您想要的。
...如果是的话我能做些什么呢?
您必须确保用于连接的名称与证书匹配。也就是说,要么需要更改证书以使其包含 IP 地址,要么您必须使用证书中显示的主机名(而不是 IP 地址)来连接到服务器。由于主机名可能指的是负载平衡器,因此您可以更改客户端系统(连接到 SQL 服务器的系统)上的 hosts 文件,以便将主机名解析为服务器本身的 IP,而不是负载平衡器的 IP。