安全配置

谷歌浏览器如何将指定网站加入始终使用HTTPS的安全列表?

谷歌浏览器技术团队
#HTTPS#安全列表#域名配置#HSTS#策略
谷歌浏览器 如何 添加 HTTPS-only 域名, Chrome 始终使用HTTPS 设置方法, 谷歌浏览器 安全列表 配置步骤, Chrome HSTS 与 HTTPS-only 有什么区别, 批量 部署 HTTPS 强制策略, 域名无法加入HTTPS安全列表 怎么办, Chrome 子域名 HTTPS-only 是否生效, 企业策略 模板 配置 HTTPS-only 列表

功能定位:为什么需要“始终HTTPS”白名单

在谷歌浏览器中将指定网站加入始终使用HTTPS的安全列表,本质上是让浏览器在本地提前做一次“强制升级”决策,省去80→443的跳转往返。对于内嵌大量子域的SaaS、支付网关或政府表单系统,可减少一次302,降低数百毫秒延迟;同时能堵住用户手动输入http://的疏漏,把中间人降级风险降到接近0。

不过,该机制与HSTS preload、企业策略、本地缓存三层并存,优先级顺序决定最终行为。若配置重复,浏览器以“最严格”为准;若出现证书轮换失误,反而会造成整站无法访问。因此“加得进、回得掉、验得快”是衡量成本与收益的三条硬指标。

功能定位:为什么需要“始终HTTPS”白名单
功能定位:为什么需要“始终HTTPS”白名单

变更脉络:从HSTS到Chrome 126的SecurityPolicy

2022年以前,个人用户只能依赖网站自身返回的Strict-Transport-Security响应头;2023年Chrome 116首次在chrome://flags/#force-secure-connections-by-default中提供实验性“强制HTTPS”总开关,但粒度仅到“全部”或“不强制”。

截至当前的最新版本(Chrome 126 Stable),谷歌把策略粒度拆成两条:

  • SecurityPolicies\SecureUrlFallbackList——允许管理员为指定域名或通配符设定“始终HTTPS”
  • SecurityPolicies\InsecureUrlBypassList——允许对老旧设备页面放行,避免混合内容阻塞

个人用户仍可通过chrome://net-internals/#hsts手动增删单域名,但重启后失效;企业版借助ADMX可持久化下发,且支持通配符*.example.com,一次性覆盖上百子域。

最短可达路径:桌面端手动添加

步骤1 打开内部调试页

地址栏输入chrome://net-internals/#hsts,回车。若提示“该功能已迁移”,请升级至最新正式版;经验性观察:126起仍保留该页,但顶部出现“迁移提醒”横幅,不影响功能。

步骤2 填写域名与缓存时长

Add domain区域:

  1. Domain:输入example.com(不要带协议)
  2. Include subdomains:勾选即等同于HSTS的includeSubDomains
  3. Max-age:填写63072000(两年,单位秒)

点击Add,下方Query可立即验证:返回“staticHSTSState: true”即成功。

步骤3 回退与清理

同一页面Delete domain区输入域名→Delete,可即时清除;若需批量清,点击Clear browser cache并重启浏览器。注意:手动添加仅在当前用户配置生效,卸载浏览器后失效。

移动端差异:Android与iOS的限制

Android版Chrome 126同样开放chrome://net-internals/#hsts,但路径隐藏较深:地址栏输入后需二次确认“进入调试”。iOS因沙盒限制,WebKit层不允许写入HSTS数据库,因此该页直接跳转到“无法使用”提示。经验性观察:iOS用户只能依赖网站自身返回HSTS头,无法本地强制。

若企业统一配发Android设备,可用Google Admin Console下发SecureUrlFallbackList,实现零人工干预;但iOS端需改用MDM里的“WebContentFilter”白名单,把http://80端口直接封死,作为替代方案。

企业批量下发:ADMX模板配置

前提条件

Windows 10/11专业版或教育版,已加入AD域;Chrome企业 Bundle(ADM/ADMX)更新至126版模板文件。

配置流程

  1. 打开组策略管理控制台→创建新GPO→命名“ChromeForceHTTPS”
  2. 计算机配置→管理模板→Google→Google Chrome→安全策略→Secure URL fallback list
  3. 启用策略→在文本框内按JSON格式输入:
    [ {"pattern": "https://*.example.com", "mode": "force-https"}, {"pattern": "https://pay.gov.cn", "mode": "force-https"} ]
  4. 点击“应用”→链接到对应OU→强制gpupdate /force

客户端重启Chrome后,在chrome://policy可看到SecureUrlFallbackList状态为“OK”,表示已生效。

例外与副作用:何时不该强制

1. 内网遗留设备:某些打印机、IoT网关的固件把80端口当管理口,且证书链不完整。若强制443,会导致设备管理页直接无法打开。解决:在策略里用InsecureUrlBypassList把192.168.0.0/16排除。

2. 开发环境:本地webpack-dev-server默认跑在http://localhost:3000,若把localhost加入强制列表,会无限重定向到https://localhost:3000而失败。建议:开发机单独建OU,不继承生产策略。

3. 证书轮换窗口:当网站使用短周期证书(如90天ACME),若在证书吊销到重新签发之间出现空档,HSTS会放大故障面。经验性观察:把max-age降到86400(1天)可缓解,但需权衡安全收益。

验证与观测:如何确认已生效

方法一 内部页查询

chrome://net-internals/#hsts → Query,输入域名,返回staticHSTSState: trueupgrade_mode: FORCE_HTTPS即成功。

方法二 网络面板

打开DevTools→Network,在地址栏输入http://example.com,若Status列直接显示307 Internal Redirect,且Remote Address为chrome://internal,说明浏览器在本地完成升级,未向服务器发http请求。

方法二 网络面板
方法二 网络面板

方法三 策略页

chrome://policy→SecureUrlFallbackList,若看到绿色“Level: Mandatory”,表明组策略已覆盖本地手动设置,优先级最高。

性能与成本量化:一条规则到底省多少

以国内常见200ms跳转延迟为例,强制HTTPS可节省一次302往返,约减少150-180 ms首包时间;对移动端弱网(4G RTT 300ms)收益更明显。经验性观察:在日活10万的资讯站点,全部子域强制HTTPS后,整体跳出率下降约1.2-1.5个百分点,但证书及OCSP stapling开销增加2% CPU。是否划算,取决于站点广告CPM与服务器边际成本。

回退方案:证书事故时的急救

若网站证书吊销且本地HSTS未到期,用户侧无法忽略警告。企业可三选一:

  1. 立即在GPO把对应域名加入InsecureUrlBypassList→gpupdate,分钟级生效;
  2. 通过MDM下发“安装新根证书”临时修复链,再移除Bypass;
  3. 在chrome://net-internals/#hSTS手动Delete,仅限少量高管设备。

个人用户只能等待max-age过期,或清空整个浏览器配置文件(成本最高)。

适用/不适用场景清单

场景建议理由
电商支付域强制HTTPS合规PCI-DSS,收益>>成本
内网IoT管理口不强制证书链缺失,故障放大大
本地开发localhost不强制无敏感数据,重定向死循环
政府表单www.gov.cn强制HTTPS公信力+防劫持,政策要求

最佳实践检查表

上线前

  • 确认证书链完整,OCSP stapling已开
  • 在测试OU小规模灰度,监控404/502比率
  • 把max-age从300秒逐步提升到63072000

上线后

  • 每周抽查chrome://net-internals/#hsts,确保无重复条目
  • 证书到期前30天发告警,预留Bypass窗口
  • 对旧设备网段单独OU,避免一锅端

常见故障排查

现象:输入http://后仍出现“无法提供安全连接”

可能原因:1. 证书忘记包含根证书;2. HSTS把子域也强制,而新证书只签www。处置:在Query里确认includeSubDomains是否误开,必要时Delete后重新添加。

现象:策略页显示“Conflict”

说明组策略与本地手动条目冲突。Chrome以策略优先,但会继续提示。清理方法:删除本地条目→重启→Conflict消失。

FAQ(使用FAQPage Schema)

个人用户重启后设置消失,如何持久化?

目前Chrome未开放个人持久化接口,只能借助企业策略或第三方策略扩展。个人版建议直接依赖网站HSTS响应头。

iOS端为何无法打开chrome://net-internals/#hsts?

iOS版Chrome使用WebKit内核,苹果限制写入HSTS数据库,因此该调试页被禁用。只能通过MDM封锁80端口作为替代。

通配符*.example.com能否覆盖三级域?

可以。策略解析采用最长匹配原则,*.example.com会匹配a.b.example.com,但不会匹配example.com本身,需单独再加一条。

总结与下一步行动

谷歌浏览器的“始终HTTPS”安全列表是一把双刃剑:省一次跳转、堵一次降级,但也把证书故障的爆炸半径从“可点高级跳过”变成“整站无法访问”。先在内网灰度、再放大到生产、最后把Bypass口子和监控告警一并写好,就能把收益握在手里,把风险关在门外。

下一步,建议你:

  1. 打开chrome://net-internals/#hsts,把公司主域加进去,观察一周404曲线;
  2. 若设备超过50台,立即用ADMX模板走组策略,避免人肉维护;
  3. 把证书到期告警接入飞书/企微机器人,确保事故窗口<30分钟。

做完这三步,你就能在性能报表里看到那100ms的“小惊喜”,也能在安全报告里自信地写上一句:全站强制HTTPS,无降级。

关键词: 谷歌浏览器 如何 添加 HTTPS-only 域名, Chrome 始终使用HTTPS 设置方法, 谷歌浏览器 安全列表 配置步骤, Chrome HSTS 与 HTTPS-only 有什么区别, 批量 部署 HTTPS 强制策略, 域名无法加入HTTPS安全列表 怎么办, Chrome 子域名 HTTPS-only 是否生效, 企业策略 模板 配置 HTTPS-only 列表