我知道,对于 http 站点,我可以将其配置为侦听特定主机名,并且可以添加多个绑定,它会忽略其余的绑定,这很好。我还知道我可以重命名我的 SSL 证书友好名称,以使该框可用于 SSL 绑定。问题是我需要接受 www.site.com 和 site.com 的 SSL,但我只获得一个带有 SSL 证书的绑定。无论我未绑定哪一个,都不会提供服务。
如何配置我的网站以仅响应 site.com 和 www.site.com 的 SSL 请求,而忽略其他所有内容?我有一个单独的 http 网站,我们将其称为 badsite.com,如果用户输入 https,它将转到此网站,因为此网站正在监听所有 https。
我无法在 ssl 到 www.site.com 和 site.com 之间进行选择,因为我需要接受两者,但我想删除、重写、错误或以其他方式不允许端口 443 请求上的任何其他内容。
答案1
您需要考虑在证书上设置主题备用名称。如果您决定使用 SAN 证书,则在提交 CSR 时应该可以选择输入 SAN。如果这样做,您可以使证书对 www.site.com 和 site.com 有效
有关 SAN 的更多信息https://www.digicert.com/subject-alternative-name.htm
答案2
我查看了所有我能找到的文档功能,我认为最好的解决方案是 URL 重写的请求阻止部分。检查 HTTP_HOST 并使用正则表达式告诉它忽略任何不是 www.site.com 和 site.com 的内容似乎与我想要的非常接近。他们仍然遇到 SSL 证书错误,因为我无法在 IIS 提供证书之前放弃请求,但一旦发生这种情况,此规则就会放弃请求。
<rule name="RequestBlockingRule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www.)?site.com$" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>
我会将这个问题搁置一段时间,看看是否有更好的建议,我认为这可能是 IIS 7.5 所能提供的最好的建议,只是缺少一个合适的解决方案。