有几个用户在尝试访问我的网站时遇到有关服务器安全连接的消息。
我们在 Mac(带有 Safari 的 iPhone、iPad 和 Macbook)和 Windows(IE 和 Chrome)上都有这个功能。
不同城镇的多家 ISP 都出现了此类情况。
该网站地址是子域名,且未安装 SSL 证书 - 无法通过 访问
https://
。主域确实有 SSL 证书(不是通配符),检查时没有显示任何错误。
我无法追踪到底发生了什么。我怀疑问题出在我们这边,因为有这么多人使用不同的浏览器/设备。我甚至不知道接下来要问什么问题,或者如何隔离问题。我也无法在本地复制这个问题,这没有帮助。
我该如何解决这个问题?
编辑:
这是来自 iPhone 用户的截图。我之前没有把它放进去,因为我认为它没有提供任何有用的信息。
答案1
如果您的主域发送Strict-Transport-Security
带有标志的响应标头,则客户端可能会发生这种情况includeSubDomains
。
示例标题:
Strict-Transport-Security: max-age=31536000; includeSubDomains
如果此标头与 includeSubDomains 一起存在,则稍后访问您的子域的兼容客户端会将所有 HTTP 引用更改为 HTTPS,并尝试通过 https 访问子域。
不幸的是,如果max-age
标头中的值设置得非常高,客户端会记住这个值并继续尝试通过 HTTPS 访问您的网站,即使您稍后删除了该标头。从上面的示例中,客户端会记住您在访问网站和子域时需要 HTTPS 一年。如果是这种情况,并且大量用户遇到此问题,您可能需要为任何之前不安全的子域安装 SSL 证书。
来自 OWASP:
设置过于严格的 STS 政策时要谨慎。仅应在组织内给定域名的所有站点都需要 SSL 的环境中包括子域。应仔细考虑最大使用期限限制,因为如果您放宽政策,不经常访问的访问者可能会发现您的网站无法访问。
在启用 includeSubDomains 之前,还请考虑 CDN、电子邮件服务或其他第三方服务的任何现有 DNS CNAME 记录的影响。由于 includeSubDomains 会强制此类 CNAME 子域为 https://,因此浏览器可能会抛出域不匹配错误,由于 HSTS 的浏览器缓存特性,这种错误很难逆转。
参考: