我们有一个在 HTTPS 上运行的网站,其 URL 如下:abc.example.com。
问题是,我们的客户认为任何网站 URL 都应该以“”开头www
,并印www.abc.example.com
在其所有标签上......
没问题,我只是使用 IIS 的 URL 重写功能创建了一条重定向规则,将所有主机名重定向到https://abc.example.com
。到目前为止一切顺利。
几个月前,我们收到了他们 IS 部门的一封电子邮件,说abc.example.com
缺少Strict-Transport-Security
标头。他们要求我们实现以下标头:
Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.
当时我还没有完全意识到这个标头的具体功能,所以我盲目地将它添加到网站上。我确实测试了网站,只是从未使用 进行过测试www.abc.example.com
。
我刚刚才发现,这个 HSTS 标头会自行将所有 HTTP URL 重定向到 HTTPS URL,导致忽略了我的自定义重定向规则。现在的问题是,用户输入http://www.abc.example.com
并被重定向到https://www.abc.example.com
,而不是https://abc.example.com
,导致 SSL 证书错误,因为www.abc.example.com
没有 SSL 证书。
只要includeSubDomains
处于活动状态,我似乎几乎无法采取任何措施来阻止这种情况发生在网络服务器上,除非我专门为设置了 SSL 证书www.abc.example.com
。
这就是为什么我想尝试通过在 DNS 级别重定向并使用 CNAME 记录来解决这个问题:www.abc.example.com. CNAME abc.example.com.
我的问题是,这会起作用吗?当用户输入时http://www.abc.example.com
,CNAME 记录会先将此 URL 重定向到http://abc.example.com
,然后https://abc.example.com
使用 HSTS 标头成功重定向到吗?或者该参数是否会preload
阻止这种情况发生,即使在 DNS 级别?
任何建议或帮助都将不胜感激。
答案1
不,这行不通。DNS 级别上不存在重定向;重定向是 HTTP 协议的功能,而 DNS(和A
)CNAME
记录仅用于解析 IP 地址。
试图通过删除标题来扭转局面也是没用的,
Strict-Transport-Security = max-age=31536000; includeSubDomains; preload.
因为它会在每个浏览器上缓存31536000
几秒钟,即 365 天。
然而,如果您不以这种方式实现 HSTS,那么您就无法获得太多好处,因为有人可能会http://www.abc.example.com
在它重定向到之前尝试进行修改https://
。
此时,唯一的出路可能是获得一个覆盖的通配符证书*.abc.example.com
,或者一个同时具有以下特征的多主机名证书:主题备用名称秒。