手机和操作系统
酒店、机场、高铁 Wi-Fi 上证书报错(认证页 Captive Portal)
Connect to Wi-Fi: The network you are using may require you to visit its login page在公共 Wi-Fi 上遇到证书错误,通常说明你还没完成网络的登录认证。 在你登录或同意条款之前,网络会拦截你的请求并试图把它跳转到认证页。HTTPS 网站没法用有效证书完成这种跳转,于是浏览器显示的是证书警告,而不是登录页。
先判断是网站的问题还是你设备的问题
都不是,是网络的问题。确认方法:同一个网站用手机流量能打开,SSL 检测 也显示证书有效:
curl ssl.sh/example.com
刚连上某个 Wi-Fi,几个无关的 HTTPS 网站就都报域名不符或签发者不受信任,基本可以确定是认证页造成的。不要接受这些警告,去找到登录页。
原因
多数情况是你还没完成登录认证。下面按出现频率列出 5 种情况。
1. 还没登录认证
在你认证之前,认证页会应答所有连接。打开一个明文 HTTP 页面,它就能顺利把你跳转过去:
http://example.com
高铁、机场、酒店、商场的 Wi-Fi 常要求手机号验证码登录,跳到认证页后按提示操作即可。
2. 系统没有自动检测到认证页
手机和电脑连上网络后会访问一个固定的 HTTP 地址,被重定向了就弹出登录窗口。VPN、自定义 DNS 或加密 DNS 可能让这一步失效。临时关掉它们,然后重新连接。
3. 浏览器先打开的是 HTTPS 或 HSTS 网站
主页或恢复的标签页是 HTTPS 网站,常常还启用了 HSTS,认证页没法重定向它。Chrome 有时能识别这种情况,显示一个带“连接”按钮的页面,帮你打开登录页。
4. 登录已过期
很多认证页过几个小时或设备休眠后就会让你重新登录,在那之前证书错误会反复出现。
5. 登录后网络仍在拦截
少数网络登录后仍然过滤 HTTPS。如果证书颁发者是网络运营方,就把这个网络当作不可信。
在各浏览器/系统上的样子
| 设备 | 显示内容 |
|---|---|
| Chrome / Edge / 360 / QQ 浏览器 | 提示连接 Wi-Fi 的页面,或者 NET::ERR_CERT_COMMON_NAME_INVALID / NET::ERR_CERT_AUTHORITY_INVALID |
| Firefox | SSL_ERROR_BAD_CERT_DOMAIN,有时顶部会出现打开网络登录页的提示条 |
| iPhone / iPad | 自动弹出登录窗口;没弹出时 Safari 显示“此连接非私人连接” |
| 安卓 | 通知栏提示登录 WLAN 网络 |
如何安全地上网
安全的做法是先打开一个 http:// 地址触发登录页,登录完成后再访问 HTTPS 网站。
1. 在新标签页打开 http://example.com(不是 https),或者点系统弹出的登录通知。
2. 登录前先断开 VPN、关掉自定义 DNS,登录后再打开。
3. 登录后刷新原来的网站。 还报证书错误就看颁发者;有些网站完全打不开的原因见 HSTS 报错。
站长怎么修
只要 curl ssl.sh/example.com 显示证书有效,你的服务器就不用改。Wi-Fi 运营方应该实现 Captive Portal API(RFC 8908)和 DHCP/RA 选项(RFC 8910),让设备不必拦截 HTTPS 就能找到登录页。
常见问题
在酒店 Wi-Fi 上点“继续前往”安全吗?
不安全。你分辨不出这是认证页的证书,还是同一网络里攻击者的证书。改为打开一个 http:// 页面进入登录页,登录之后,原来的网站会用有效证书正常加载。
笔记本上认证页一直不弹出来,怎么办?
先断开 VPN,临时关掉自定义 DNS 或加密 DNS,然后在新标签页打开 http://example.com。还不行就“忘记此网络”再重新连接,有些认证页只会重定向连上后的第一个请求。
已经登录了,还是报证书错误,为什么?
有些网络登录后仍在拦截 HTTPS 做过滤,或者你的登录已经过期。看一下证书的颁发者是不是网络运营方。如果是,不要在这个网络上输入敏感信息,改用手机流量。