您好,我有多个测试网站,托管在我所在公司的异地服务器上。这些网站实际上彼此没有关联,因此有不同的域名。这台机器有一个 IP 地址,我想保持这种状态。
例如,我希望两个网站的特定页面启用 SSL。一个网站是 testsite01,另一个是 testsite02。从我工作的办公室的本地 DNS 服务器,我们有两个名称 testsite01 和 testsite02 指向异地服务器。在 IIS 中,每个网站都托管在端口 80 上,并具有与上面指定的主机标头相匹配的不同主机标头。
问题是当我通过 IIS 创建两个自签名证书并将它们应用于托管在不同端口上的每个网站时,因为 IIS 不允许在 443 上运行多个 HTTPS 站点。我决定为 testsite01 提供 HTTPS 端口 443,为 testsite02 提供 HTTPS 端口 444。
当我访问 testsite01 并访问该网站下的安全页面 login.aspx 时,我收到证书警告,因为这是一个自签名证书,并且我使用浏览器地址栏中的 https 地址进入正确的页面登录页面。当我转到 testsite02 并尝试访问该网站的 login.aspx 页面(该页面也应受到保护)时,我被带到了 testsite001 的安全登录页面。
我真的很难理解为什么会发生这种情况,也许是因为我使用的是自签名证书,而 SSL 无法在端口 444 上运行。我尝试使用自签名证书执行此操作的原因是因为这仅用于测试,我们不想为此目的购买昂贵的通配符证书。
请问有人可以帮助我或者给我建议吗?
答案1
您可以使用以下方式创建通配符证书IIS 资源工具包(称为selfssl.exe
)如果您需要它持续的时间比(我认为)IIS 管理器中的内置证书生成器提供的 30 天更长(不记得它在哪里了;相信它在右侧面板的“证书”下)。如果不是,只需使用内置的。
此自签名通配符证书 (*.example.com) 一旦创建并位于证书存储中,就可以分配给 IIS 下配置了相应主机头的绑定下的所有站点。
答案2
这可能与证书无关。如果证书不好,它会比你描述的时间更早失败。当你为 444 端口 (testsite002) 创建绑定时,你有没有确保协议选择 https 而不是 http?
我假设你正在测试https://testsite002:444。当端口不是默认的 443 时,必须在 URL 中明确使用该端口。
如果是“重定向”,听起来好像绑定正确,但其他原因导致了重定向。您是否有任何 URL 重写规则或其他会导致重定向的东西?有任何代码可以做到这一点吗?
尝试使用 test.htm 页面进行测试,并将 web.config 临时重命名(例如 web.config_backup)。这将避免一些常见的测试重定向。
答案3
检查你的重定向,确保你重定向到https://testsite002:444
另外,您可以设置每个站点以响应不同的主机头,只要测试机器上的 DNS 或主机文件转到正确的 IP,您就可以在 443 上运行两个站点。
查看此 YouTube 视频以获取一些说明:http://www.youtube.com/watch?v=zVCmzBfx3BE