问题描述
在引入WiFiDog实现上网认证功能中,有2个绕不过的问题:https重定向和Select检测问题,前者非要求用户访问80端口,后者导致效率较低下。就用户体验来说,https无法主动重定向非常不可忍受。在我的UC浏览器上,推荐的网站中有个新浪,它是https的,每次点击都死在哪里,非常难堪;当然从地址栏中选择博客园,也是白屏。
问题处理
本文仅涉及https重定向的问题,Select问题暂不涉及。开始想在WiFiDog代码中修改,主要是监听80和443端口,处理流程还按现有80端口报文流程的来处理。但通过抓包后发现,即使路由器正确回复了重定向页面,浏览器还是显示“出错啦”。想来也是,https的报文都是加密的,直接借用http的报文来回复,应该通不过。后来在网上找了些资料,发现在服务器端http和https间强制重定向的配置非常有参考价值。由是先让服务端的nginx支持ssl,给它创建了不需要密码的key和crt文件,并修改nginx配置,确认服务器本身支持https访问。最后在路由器或网关上,将443报文都重定向到认证服务器。
这样,浏览器使用https时,不再是白屏,而是认证服务器上的认证页面了。当然,浏览器会提示此站证书非法,是否继续访问(体验还是不好)。这个需要拿到了认证机构颁发的crt文件后,再来观察此提示信息是否会消失。
就目前来说,有提示信息,比白屏要好点。
仅供记录,留待下次完善之。
时间: 2024-10-10 09:29:21