問題描述
在引入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文件后,再來觀察此提示信息是否會消失。
就目前來說,有提示信息,比白屏要好點。
僅供記錄,留待下次完善之。