在网站上实施HSTS,什么是HSTS和HSTS预加载列表?

更新时间:2025-04-12 来源:openprovider 作者:openprovider

什么是HSTS和HSTS预加载列表?

HSTS(HTTP 严格传输安全)协议是一种强制通过安全的 HTTPS 通道进行网络连接的策略/机制。换句话说:如果没有有效的SSL证书,此类网站将无法在您的浏览器中加载。浏览器甚至不会显示忽略SSL警告的选项。

在你的网站上实施 HSTS

如果您希望网站始终通过 HTTPS 服务,可以添加 Strict-Transport-Security 标头。此 HTTPS 标头包含一个参数 max-age ,用于定义此要求的有效时长(以秒为单位)。您 还可以添加可选参数 includeSubDomains ,以强制所有子域的安全连接。

image

例子

HSTS标头的示例如下:

严格传输安全:max-age=31536000;includeSubDomains

此标头定义 HSTS 的有效期为 365 天,并且也会影响子域名。换句话说,下次您访问此特定网站或其子域名之一,并尝试通过不安全的 HTTP 连接进行操作时,您的浏览器将会抛出错误。

限制

请注意,只有在连接已经安全的情况下,HSTS标头才会被接受。如果页面通过HTTP连接提供,浏览器会忽略 HSTS标头。因此,务必将所有HTTP请求自动重定向到 HTTPS。

虽然 HSTS 标头可以抵御中间人攻击(例如通过公共 Wi-Fi 接入点浏览时),但如果是首次访问某个网站,仍然存在风险:黑客可以拦截您的请求并移除 HSTS 要求。因此,请确保您首次访问该网站时使用的是安全的接入点。

HTTP 严格传输安全 (HSTS)

HTTP 严格传输安全 (HSTS)是一种机制,用于指示网站浏览器只能通过 HTTPS 访问该网站。此机制的工作原理是网站发送 Strict-Transport-Security包含网站策略的 HTTP 响应标头。

大多数主流浏览器都支持 HSTS 。有关 HSTS 的更多详细信息,请参阅RFC 6797

HSTS 的优势

当网络浏览器强制执行域名的 HSTS 策略时,它会将该 http://域名的所有 URL 升级到 HTTPS。如果该策略还设置了 includeSubDomains,它也会对所有子域名执行此操作。

启用 HSTS 的网站有助于保护其用户免受路径攻击者发起的以下攻击:

  • 浏览历史记录泄露:如果用户点击指向某个网站的HTTP 链接,路径上的网络观察者可以看到该 URL。如果该网站强制执行了 HSTS 策略,浏览器会将该 URL 升级为HTTPS,这样网络观察者就看不到该路径了。
  • 协议降级:如果站点从HTTP重定向到HTTPS,则路径网络攻击者可以拦截并重写重定向,以使浏览器保持使用纯文本 HTTP。
  • Cookie 劫持:在HTTP请求中,路径上的网络攻击者可以查看并修改Cookie。即使网站重定向到HTTPS,路径上的攻击者也可以将Cookie注入重定向响应中。

部署建议

如果您的网站致力于使用HTTPS,并且您希望浏览器强制您的页面仅通过HTTPS加载,我们建议按照以下步骤启用HSTS:

  1. 检查您网站的所有子域(和嵌套子域),并确保它们通过HTTPS正常运行。

    • 注意:这还包括不可公开访问的内部子域。
  2. 将标头添加到所有 HTTPS 响应中,并使用以下标头值分阶段 Strict-Transport-Security增加:max-age

    • 5分钟:
      max-age=300; includeSubDomains
    • 1周:
      max-age=604800; includeSubDomains
    • 1个月:
      max-age=2592000; includeSubDomains

    在每个阶段,检查是否有损坏的页面,并监控网站的各项指标(例如流量、收入)。修复所有出现的问题,然后等待 max-age整个阶段结束后再继续下一步。例如,在最后一个阶段,等待一个月。

如果您有一组员工或用户可以对部署进行 Beta 测试,请考虑在这些用户上尝试前几个加速阶段。然后,确保从头开始,对所有用户执行所有阶段。

预加载 HSTS

由于网站在浏览器访问时会告知浏览器它们支持 HSTS,因此浏览器在用户首次访问网站之前无法获知网站的 HSTS 策略。因此,浏览器在首次连接到网站之前无法强制使用HTTPS,这可能会导致用户失去保护。首次加载后,网络浏览器会获取网站的HSTS策略,并能够在所有后续加载中强制使用HTTPS。

为了解决此首次加载问题,Chrome 维护了一个具有强 HSTS 策略且仅支持 HTTPS 的域名列表。此HSTS 预加载列表内置于Chrome 中。对这些域名的请求将仅通过 HTTPS 发出;如果 HTTPS 不可用,任何HTTP 请求都将升级到 HTTPS 并连接失败。其他主流浏览器(Firefox、Safari、IE 11 和 Edge)也基于Chrome 列表拥有HSTS 预加载列表。

许多浏览器(Chrome、Safari)会自动将所有HTTP导航升级到HTTPS,无论域名的HSTS策略如何。只有当这些升级在主动攻击者存在的情况下失败时,HSTS预加载才有意义。与 HSTS 本身带来的好处相比,HSTS预加载带来的好处微乎其微。虽然我们推荐使用HSTS,但不建议使用HSTS预加载

提交要求

如果站点 preload在HSTS标头中发送指令,则被视为请求纳入预加载列表,并且可以通过此站点上的表单提交。

为了通过此表单被接受到HSTS预加载列表,您的网站必须满足以下要求:

  1. 出具有效证件
  2. 如果您正在监听端口80,则在同一主机上从HTTP重定向到HTTPS。
  3. 通过HTTPS为所有子域提供服务。
    • 具体来说,www如果子域存在 DNS 记录,则必须支持该子域的 HTTPS。
    • 注意: HSTS 预加载适用于所有子域,包括不可公开访问的内部子域。
  4. 在基础域上为 HTTPS 请求 提供HSTS 标头:
    • 必须 max-age至少为 31536000秒(1 年)。
    • includeSubDomains必须指定该指令。
    • preload必须指定该指令。
    • 如果您从 HTTPS 站点提供额外的重定向,则该重定向仍必须具有 HSTS 标头(而不是其重定向到的页面)。

有关 HSTS 的更多详细信息,请参阅RFC 6797。以下是有效HSTS标头的示例:

Strict-Transport-Security:``max-age=63072000; includeSubDomains; preload

您可以在上面的表单中再次输入域名来检查请求状态,或者 chrome://net-internals/#hsts在浏览器中访问以查看当前的 Chrome 预加载列表。请注意,新条目已硬编码到 Chrome 源代码中,可能需要几个月的时间才能到达稳定版本。

持续要求

您必须确保您的网站始终满足提交要求。请注意,preload从标题中删除该指令将使您的网站立即符合移除表单的条件,并且该网站将来可能会因未能满足要求而被自动移除。

特别地,上述要求适用于2017 年 10 月 11 日 hstspreload.org或之后提交的所有域名(即Chrome 63之后预加载的域名)

同样的要求也适用于2016 年 2 月 29 日或之后提交的早期域名(即 Chrome 50 之后预加载的域名),只是这些域名所需的最大年龄仅为 10886400几秒。

预加载应该选择加入

如果您维护的项目提供HTTPS配置建议或启用 HSTS 的选项,请不要 preload默认包含该指令。我们经常收到一些网站运营人员的电子邮件,他们尝试过这种方式启用HSTS,结果却发现自己被列入了预加载列表,却没有意识到某些子域名无法支持HTTPS。对于这些网站来说,移除HSTS往往既缓慢又痛苦。

支持或建议HSTS和HSTS预加载的项目应确保网站运营者在为特定域名启用预加载之前了解预加载的长期后果。还应告知他们,他们需要满足额外要求并将其网站提交至hstspreload.org,以确保网站成功预加载(即获得预期配置的全面保护)。

HSTS 预加载列表

即使在首次访问网站之前,也可以在更高级别上强制执行安全连接:HSTS 预加载列表。这是一个默认支持 HSTS 的域名列表:无需逐个添加 HSTS 标头,始终支持HSTS。此列表由 Google 管理,所有主流网络浏览器(包括 Chrome、Firefox 和 Internet Explorer)均使用。如果您感兴趣, 可以查看已添加到 HSTS 预加载列表的完整(https://cs.chromium.org/chromium/src/net/http/transport_security_state_static.json)域名列表。如果您想将您的网站添加到 HSTS 预加载列表,请访问hstspreload.org网站。

不仅可以将域名添加到 HSTS 预加载列表中,还可以将完整的顶级域名(域名后缀)添加到 HSTS 预加载列表中。如果注册局决定将其后缀添加到 HSTS 预加载列表中,则在该顶级域名 (TLD) 下注册的每个域名都必须通过 HTTPS 提供服务。首批使用 HSTS 预加载列表的后缀是 .bank 和 .insurance——这两个后缀以安全性为独特卖点。Google 注册局还将 .app 和 .dev 添加到 HSTS 预加载列表中。

提交表格

如果您仍希望提交您的域名以纳入 Chrome 的HSTS预加载列表,并且您已遵循我们的部署建议慢慢增加 max-age您网站 Strict-Transport-Security标头的权重,您可以使用此表单来执行此操作:

预加载的域image.png

本文来源:https://hstspreload.org/#submission-requirements

标签

有用
分享
无用
反馈
返回顶部
0 个回答
16 次浏览
立即加入,帮您快速选购适合您的SSL数字证书 申请SSL证书
免费SSL证书_专业SSL证书申请_HTTPS加密【TopSSL】
免费SSL证书永久生成
微信公众号二维码 扫一扫在线咨询
关注 TopSSL 公众号, RSS订阅 SSL资讯与技术支持

2004-2025 © 北京传诚信  版权所有 | TopSSL提供免费SSL证书SSL证书申请轻松实现HTTPS加密! 北京市朝阳区鹏景阁大厦16层

技术协助:wo@topssl.cn 企业咨询:vip@topssl.cn