IIS7.5 使用多个 SSL 绑定/证书将一个 SSL 端口重写为另一个 SSL 端口

IIS7.5 使用多个 SSL 绑定/证书将一个 SSL 端口重写为另一个 SSL 端口

我的 Web 服务器(仅托管内部网站)有两个证书。一个是用于子域的通配符证书,另一个是用于内部类似工具的服务器证书。

  • 通配符证书:*.internal.domain.com
  • 服务器证书:server.internal.domain.com

我最近刚刚使用通配符证书将我们的第一个仅支持 https 的站点添加到服务器。它必须使用不同的端口:8443,因为服务器证书已绑定到443

当导航到时,https://mysite.internal.domain.com/网站加载失败并抛出安全警告:NET::ERR_CERT_COMMON_NAME_INVALID。对我来说这似乎是意料之中的,因为浏览器正在尝试使用端口443和服务器证书。

如果您导航至 ,该网站运行正常https://mysite.internal.domain.com:8443

我尝试编写一条重写规则,该规则可以接受任何请求并将其重写到端口8443作为测试,但它似乎不起作用:

<rewrite>
    <rules>
        <rule name="To 8443" patternSyntax="Wildcard">
            <match url="*" />
            <action type="Rewrite"
                    url="https://mysite.internal.domain.com:8443/{R:0}"
                    appendQueryString="false" />
        </rule>
    </rules>
</rewrite>

NET::ERR_CERT_COMMON_NAME_INVALID当我浏览该网站时仍然出现错误。

有人知道我如何才能让用户请求https://mysite.internal.domain.com并重定向到吗https://mysite.internal.domain.com:8443

答案1

不幸的是,您的重定向不会起作用。当浏览器尝试导航到时https://mysite.internal.domain.com/,浏览器会注意到通用名称和主机名不匹配(如您所说)并在重定向生效之前断开连接。要使重定向起作用,需要成功协商 HTTPS 连接,以便 Web 服务器可以向浏览器发送响应以告诉它重定向到另一个 URL。由于 HTTPS 连接因 SSL 错误而失败,因此它永远不会走到那一步。这是设计使然,因为如果浏览器认为所出示的证书存在问题,继续与 Web 服务器通信会带来安全风险,即使只是被告知重定向到其他地方。

听起来你尝试采用的方法可能不是最合适的做法,也许值得退一步考虑。如果不详细了解你的环境,很难提供确切的解决方案,但以下建议可能会有所帮助:

  • 服务器是否有其他可用的 IP 地址?如果有,您可以将站点绑定mysite.internal.domain.com到此 IP 地址,更新 DNS 并将通配符证书也绑定到此站点。这样您就可以将站点保留在 443 上,这样会更简洁。
  • 通配符证书也对有效server.internal.domain.com,因此您可以将通配符证书用于所有内容,除非有其他特殊原因需要继续使用该server.internal.domain.com证书。
  • 使用 SSL 时,可以使用通配符证书将多个站点绑定到同一端口(但有一些限制)。请参阅这个问题了解更多信息。

答案2

处理重写规则正在建立 HTTPS 通道。

想想看,使用 HTTPS 时,地址、HTTP 方法以及 HTTP 标头和正文中的其他所有内容都会被加密,并且重写规则会使用它们。因此,HTTPS 握手必须在请求到达规则之前完成。

如果您想允许用户从 开始https://mysite.internal.domain.com/并重定向到https://mysite.internal.domain.com:8443,那么除了使端口 443 上的 SSL 证书对域有效之外,没有其他办法。

我可以为您想到以下两种方法:

  1. 对两个绑定都使用通配符证书,因为据我所知,它对两者都有效。

  2. 升级到 IIS 8.0 并使用 SNI(服务器名称指示 -http://en.wikipedia.org/wiki/服务器名称指示) 这允许您对绑定到相同 IP 和端口但仅在主机名上不同的不同网站使用不同的 SSL 证书。

答案3

如果您使用 Google Chrome 进行测试,请确保您的证书具有通用名称和主题备用名称,并填写了您的网站名称 (mysite.internal.domain.com)。Chrome 的错误无法准确指出问题所在。这将帮助您绕过 SSL 警告。请发布遇到的任何进一步错误消息

答案4

也许可以选择先https://mysite.internal.domain.com监听HTTP,然后将其重定向到另一个?请记住,如果尚未安装 URL 重写模块,则可能需要安装它。

相关内容