Android 上的 Chrome 强制门户问题

Android 上的 Chrome 强制门户问题

我已经在公共 Wi-Fi 上设置了 WebAuth。我们有一个 Cisco WLC 5508,当使用 iOS、Apple、Windows 设备或某些 Android 设备时,页面加载正确,但是当我使用 Chrome 53.0.2785.124 作为 Marshmallow 6.0.1 上的默认浏览器的设备时,我收到一个错误页面,指示可能存在 MTM 攻击。它显示“您的连接不是私密的”,后面跟着一些其他文本和 NET::ERR_CERT_COMMON_NAME_INVALID。这是错误的屏幕截图。

据我了解,这是由于浏览器尝试访问 URL 并期待特定结果,但是请求的 google.com 主页上的证书与返回的 wlc.mydomain.com SSL 证书上的主机证书不匹配。

www.google.com/chrome/browser/privacy/whitepaper.html 中有一段内容如下:

如果 Chrome 检测到 SSL 连接超时、证书错误或其他可能由强制门户(例如酒店的 WiFi 网络)引起的网络问题,Chrome 将向 http:// www.gstatic.com/generate_204 发出无 Cookie 的请求并检查响应代码。如果该请求被重定向,Chrome 将在新选项卡中打开重定向目标,并假设它是登录页面。对强制门户检测页面的请求不会被记录。

它实际上是向 http://connectivitycheck.android.com/generate_204 发送请求。我看到的问题是在 WLC 的响应中,状态代码是 HTTP 1.1 200 OK。我要么希望看到由于页面被阻止而导致的错误,要么希望看到指示重定向的 300 响应。根据上面来自 Google 的文字,听起来浏览器在收到重定向时会进入强制门户模式(并打开一个新选项卡进行身份验证)。

我认为这可能是 WLC 配置的问题,但也许是 Android 上的 Chrome 53 的问题。

如果有人有推荐的解决方案,我将不胜感激。

问候,D

答案1

事实证明这是 Chrome 的一个错误。

请参阅问题 662150

https://bugs.chromium.org/p/chromium/issues/detail?id=662150&can=2&start=0&num=100&q=&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified&groupby=&sort=

雨伞编号为 335933。

****更新:

我们确实需要这个功能。谷歌不会很快找到解决方案。我的新 S7E 内置了一个强制门户应用程序。

我猜其他制造商仍会遇到问题。我确实看到一位患者使用联想平板电脑就诊时也遇到了这个问题。一位员工使用她较旧的三星设备时也遇到了同样的问题。

我发现很多人都饱受强制门户之苦。我最终通过对强制门户测试 FQDN 的 DNS 流量进行 Sinkholing 来解决这个问题。

我确实首先尝试在我的 ASA 上根据 FQDN 丢弃流量,但由于流量来自 WLC,因此我无法根据 VLAN 拒绝。

因此,DNS 遭到黑客攻击。

在 WLC 上,我设置了 3 个虚拟接口。1 个是内部接口。2 个是供应商接口,3 个是公共接口。每个接口都有自己的 DHCP 范围,因此我可以根据它们的独特情况设置所有特定选项。3 有一个 WLAN,并与之关联了强制门户。

我将我的供应商 WLAN 配置为使用公共 DNS 服务器 - 但该 WLAN 上用处不大。

我有两个公共缓存 DNS 服务器,运行带有 BIND 9 的 CentOS;我将它们锁定以尽量减少攻击面。它们是 ESXi 主机上的虚拟机,每个虚拟机都安装了一个铜网卡,连接到一个独立的虚拟交换机和我的 DMZ 网络。我没有花一分钱。

我这样做是因为一些用户(访问医生)使用他们的个人设备,我们在没有强制门户的情况下将他们连接到供应商(他们连接一次并保持连接 - 访客有时间限制并且需要接受可接受使用政策)。

添加到 /etc/named.conf

zone "connectivitycheck.android.com" IN { type master; file "sinkhole.db"; };

zone "clients3.google.com" IN { type master; file "sinkhole.db"; };

/var/named/sinkhole.db

$TTL 600 @ IN SOA localhost root ( 5 ; serial 3h ; refresh 1h ; retry 1w ; expire 1h ) ; min TTL ; IN NS ns. * IN A 127.0.0.1 connectivitycheck.android.com. IN A 127.0.0.1 clients3.google.com. IN A 127.0.0.1

它并不漂亮,但效果很好。我希望这对其他人有帮助。

相关内容