阻断/认证页面无法点击继续
阻断/认证页面无法点击继续
问题描述
当用户访问的网页被 WebFilter 功能阻断(或开启了防火墙用户认证)时,会在浏览器中弹出 WebFilter 阻断(或用户登录)页面,由于默认情况下 FortiGate 阻断页面使用的是 FortiGate 的自带证书(未被客户端信任的 CA 颁发的证书),会导致浏览器提示网页不安全(以 Chrome 为例)。


该提示信息有时可以跳过,从而显示出 FortiGate 的阻断(或用户登录)页面。


但有时会出现没有点击继续的按钮,导致无法继续显示 UTM 阻断页面(或用户登录页面),即使使用键入“thisisunsafe”的方法也无法继续。

问题原因
这是由于访问的网站开启了 HSTS 功能。
HSTS 介绍
HTTP 严格传输安全(HTTPStrictTransportSecurity)是一套由互联网工程任务组发布的互联网安全策略机制。网站可以选择使用 HSTS 策略,来让浏览器强制使用 HTTPS 与网站进行通信,以减少会话劫持风险。
用户首次访问某网站是不受 HSTS 保护的。这是因为首次访问时,浏览器还未收到网站的 HSTS,所以仍有可能通过明文 HTTP 来访问。
另外,如果中间人使用自己的自签名证书来替换网站证书,浏览器会给出警告(FortiGate 的 UTM 阻断页面或登录页面就是此种情况),但是许多用户会忽略警告。HSTS 为了解决了这一问题,一旦服务器发送了 HSTS 字段(HSTS 信息被储存在浏览器中),在 HSTS 老化时间到期前,将不再允许用户忽略警告。这就导致了浏览器除了第 1 次访问开启 HSTS 的网站可以点击继续按钮显示出阻断页面(或登录页面),后续再访问此网站时,没有继续按钮显示。
浏览器中的 HSTS 信息查询
我们可以在 Chrome 里的 chrome://net-internals/#hsts(Edge 为 edge://net-internals/#hsts)页面下查询网站的 HSTS 信息是否被储存在了浏览器中,如下举例,www.taobao.com 网站开启了 HSTS,并在某次成功访问的时候被加入了 Chrome 的 HSTS 列表,目前还未过期。

FortiGate 开启 WebFilter 并阻断该网站后,客户端访问该网站时会出现警告页面无法点击继续按钮的情况。

删除浏览器中的 HSTS 信息
在 Chrome 里的 chrome://net-internals/#hsts(Edge 为 edge://net-internals/#hsts)页面下删除网站的 HSTS 信息,删除后,无法再查询到该网站的 HSTS 信息。


客户端再次访问该网站时,警告页面可以点击继续按钮,并显示出 FortiGate 的阻断页面。


请注意,有一些知名网站的 HSTS 信息被预置在了浏览器中,如 www.google.com 、www.gmail.com 、www.facebook.com 等,这些 HSTS 信息是无法被删除的。

Firefox 需要通过删除对应网站的缓存信息来删除 HSTS 信息。
解决方法
下载 FortiGate 用于 UTM 阻断页面(或用户认证页面,用户认证的证书需要到“系统管理 → 证书”页面下载)使用的 CA 证书,如下图所示,WebFilter 功能所属的安全策略使用的 SSL 检查配置文件为默认的“certificate-inspection”,编辑该 SSL 检查配置文件后,下载 CA 证书。


将 FortiGate 使用的 CA 证书加入设备或者浏览器的信任列表(Chrome/Edge 依赖系统的证书信任列表,而 Firefox 有自己的信任列表,需要在浏览器设置中添加)。

客户端再次访问该网站时,会直接显示出 FortiGate 的阻断页面(或登录页面),不会弹出证书告警页面。

因为浏览器在访问网站时,检查 HSTS 的时候会优先查找自己本地证书的信任关系(Firefox 有自己的信任列表,需要在浏览器设置中添加),只要证书被设备或者浏览器本身信任,那么就不会被阻止,同样的事情,就算网站没有开启 HSTS,因为对 FortiGate 证书信任了后,也不会弹出对应的证书错误提示页面,从而直接访问到 UTM 阻断页面(或用户登录页面)。