企业WiFi认证系统上线后投诉最多的问题不是认证慢,是认证页面弹不出来或者弹出来提示"不安全"。根因几乎都在HTTPS证书上。Portal认证的重定向机制和HTTPS加密天然有冲突,用户浏览器访问HTTPS网站时,AC或网关要把流量劫持到认证页面,浏览器会认为这是中间人攻击,直接拦截。证书配不好,一半用户连不上网。
为什么HTTP网站能弹认证页,HTTPS的弹不出来
Portal认证的基本原理是:未认证用户访问任意网站,AC或网关把HTTP请求重定向到认证页面。HTTP是明文传输,重定向很容易做。但HTTPS网站在传输前先建立TLS加密通道,浏览器要先验证服务器证书,这个阶段AC无法插入重定向。用户打开百度是HTTP所以能弹页,打开淘宝是HTTPS就弹不出来,用户以为是网络坏了,实际是证书和重定向机制的问题。
解决方案一:引导用户先访问HTTP网站
最简单的做法是在WiFi连接说明里提示用户先打开一个HTTP网站,比如neverssl.com,触发Portal重定向。但这不是正经方案,用户不会按说明操作,体验很差。苹果和安卓的CNA(Captive Network Assistant)机制会自动检测网络是否需要认证,连接WiFi后系统自动访问一个HTTP探测地址,触发Portal页面弹出。但CNA弹出的页面不是完整浏览器,有些认证方式在CNA里跑不起来,比如微信扫码认证需要调用微信APP,CNA里跳不过去。
解决方案二:Portal服务器配置HTTPS证书
正规做法是给Portal服务器配置可信的HTTPS证书,让认证页面本身走HTTPS。这样即使用户访问HTTPS网站被拦截,浏览器看到的证书是可信的,不会报不安全。证书必须是正规CA签发的,不能用自签名证书,自签名证书浏览器照样报警。域名要和证书一致,Portal页面地址用IP的话证书验证不了。企业部署时要申请一个专门的Portal域名,比如wifi-auth.企业域名.com,绑定证书,AC上配置External Portal URL时用这个域名。
证书过期是隐形炸弹
Portal证书过期后,所有用户连接WiFi都会看到"您的连接不是私密连接"的红色警告,不懂技术的用户以为是WiFi被黑了,直接不敢连。证书有效期一般是一年,运维人员很容易忘记续期。建议把证书到期时间写进运维台账,提前30天续期,续期后要在测试环境验证证书链完整、中间证书没有缺失,再切到生产环境。有些CA签发的证书需要安装中间证书,只装服务器证书不装中间证书,部分浏览器会报证书链不完整。
苹果和安卓的弹窗行为差异
苹果iOS连接WiFi后自动弹出CNA窗口,窗口里加载Portal页面,认证成功后自动关闭。安卓的CNA机制各厂商实现不一样,原生安卓会弹,部分定制安卓不弹,需要用户手动打开浏览器触发。Portal页面要做适配:CNA窗口尺寸小,页面不要做太宽的布局;认证成功后不要跳转到其他网站,CNA窗口会自动关闭,跳转反而导致页面卡住。微信扫码认证在CNA里无法完成,因为CNA不是完整浏览器没有微信APP跳转能力,这种情况要引导用户在CNA里点"取消"然后用完整浏览器打开认证页。
HTTPS重定向的技术限制
即使Portal页面配了HTTPS证书,AC或网关也不能直接劫持HTTPS流量做重定向,因为TLS握手在浏览器和目标服务器之间完成,中间设备无法插入。实际做法是:AC或网关拦截用户的第一个HTTP请求做重定向,或者通过DNS劫持把未认证用户的DNS解析指向Portal服务器。DNS劫持的问题是用户如果手动配了DNS(比如8.8.8.8),劫持就失效。更稳妥的做法是在网关上做基于IP的策略路由,未认证用户的所有80和443端口流量都牵引到Portal服务器,由Portal服务器处理重定向。
认证成功后的跳转问题
用户认证成功后,Portal页面通常要跳转到用户原本想访问的网站,或者企业指定的官网。跳转用HTTP的302重定向没问题,但如果跳转到HTTPS网站,浏览器会重新建立TLS连接,这个过程中如果AC的放行策略还没生效(有些AC的Radius CoA放行有几百毫秒延迟),用户会看到连接失败。解决办法是认证成功后在Portal页面停留2到3秒再跳转,或者跳转前用AJAX轮询检测网络是否已通。
证书和域名的运维清单
上线前检查:Portal域名是否已解析到服务器、证书是否由正规CA签发、证书链是否完整、证书有效期是否覆盖一个运维周期、AC上的Portal URL是否用域名而不是IP、服务器防火墙是否开放443端口。上线后每季度检查:证书是否即将过期、域名解析是否正常、HTTPS访问是否有浏览器警告、不同手机型号的弹窗行为是否正常。证书续期后要做全量测试,不能只在一台手机上验证。
企业WiFi认证系统的HTTPS证书问题看起来是小事,实际是用户体验的第一道关。Portal服务器配可信证书、域名和证书一致、证书过期提前续期、苹果安卓弹窗行为分别适配、认证成功跳转加延迟,这五件事做到位,认证页面弹不出来和报不安全的投诉能降九成。证书不是配一次就完事,是要持续运维的基础设施。