![IIS URL 重写/SSL 证书](https://linux22.com/image/1549673/IIS%20URL%20%E9%87%8D%E5%86%99%2FSSL%20%E8%AF%81%E4%B9%A6.png)
我将使用 DigiCert 多域证书进行以下操作:
www.example.com
example.com
sub1.example.com
www.sub1.example.com
sub2.example.com
www.sub2.example.com
etc...
我正在使用 IIS URL Rewrite 从所有域中删除 www.,这给了我:
example.com
sub1.example.com
sub2.example.com
我还使用 URL Rewrite 将所有 http:// 路由到 https://。
我的问题:
- 由于我正在重新路由到精简版 URL,我是否需要 www. 域名证书?
- 以 www. 为前缀的证书对于协商初始 SSL 连接是否是必要的?
如果可能的话,我想消除所有 www. 证书。
已编辑
为了完整性,我添加了我正在使用的两个重定向。
<rewrite>
<rules>
<rule name="Remove www" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="https://{C:1}/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
<rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" negate="false" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
</rule>
</rules>
</rewrite>
谢谢...
更新:不良副作用
经过大量测试,我发现从 URL 中删除 www. 会产生一些不良副作用。在某些情况下,用户会看到有关网站不安全的安全警告,从我们的角度来看,这确实很糟糕。
可能的用户输入的 URL:
example.com、www.example.com、http:// 或 https:// 以及 example.com 或 www.example.com
所需重写 URL:
https:// + example.com
浏览器之间的差异
https:// + www.example.com/ URL 不会在 IE、Edge、Safari 和 Firefox 上重写为所需的 URL,但会在 Chrome 中重写。考虑了一段时间后,我不确定 Chrome 为什么允许 HTTPS 重写,因为输入了一个硬编码的 HTTPS URL。
Chrome 将 https:// + www.example.com/ 路由到 https:// + example.com。不会向用户显示任何证书失败信息。
IE 缓存损坏?
在 IE 上输入 URL https:// + www.example.com 后,似乎会破坏历史记录缓存。
如果您在输入上一个 URL 后输入 www.example.com,浏览器将路由到 https:// + www.example.com/。这会产生 BAD 证书消息,这不太好。
如果您关闭并重新打开 IE,再次输入 www.mydomain.com,异常仍然继续。
如果我手动清除不良 https:// + www.example.com URL 的缓存,然后输入 www.example.com,IE 会路由到 https:// + example.com,这是所需的结果。
Safari 临时缓存损坏?
在与 IE 相同的测试条件下,MAC Safari 也出现了类似的故障,但 Safari 在导航到其他 URL 并返回后恢复了或者关闭/重新打开浏览器。
使用模型的结论
消除 www. 不是一个好选择。
答案1
TLS 会话在任何处理(包括重写)之前设置。因此,为了避免浏览器错误,您应确保您的证书包含您希望客户端在其浏览器中输入的所有 DNS 名称的主题备用名称条目。其中包括万维网那些。
唯一的例外是你从http://www.example.com(无 TLS)https://example.com(TLS)。在这种情况下,重写将通过 http 进行,因此不会涉及 TLS 和证书。