?? 也談 HTTPS - 如何內測
(圖片來自 茶杯中的可愛小白鼠 壁紙 - 2560x1920-堆糖,美好生活研究所)
在上篇文章 ?? 也談 HTTPS - HTTPDNS + HTTPS 中, 我們談了如何基於 HTTPDNS 來部署無堅不摧的 HTTPS 通信環境, 這次我們討論另外一個比較頭疼的問題:部署。
小站點部署 HTTPS 相對成本低,改改前端代碼,就可以上線了。 但作為業務有一定複雜度的大網站,就沒辦法這麼暴力上線了。
前端在基礎庫中調整 Scheme 之後,仍然可能存在很多邊邊角角沒有覆蓋到。 比如 JS 裡面寫死了 HTTP,那在 HTTPS 下請求 HTTP XHR 的話, 瀏覽器會將請求攔截掉。 一旦出現這種故障,用戶就無法正常使用業務,小白用戶往往也不懂得自己將 https:// 換成 http:// 使用。
解決的思路是足夠的內測,找一群人幫我在 HTTPS 環境下使用足夠長時間。 讓他們當小白鼠,提前發現問題並解決。 於是,我把目光轉向了身邊的一大大群小白鼠,整個辦公室的同事~??
沒錯,我要強制所有同事使用 HTTPS 的公司網站,從而靠他們幫我發現問題。
靠發郵件、QQ 廣播呼籲大家使用 HTTPS 站點的方法,估計是不行的。 沒有利益驅動,推動力是不足的,我必須想點強制的手段讓他們使用 HTTPS。
有三種方法來達到這個效果:
- 業務系統內入口判斷用戶身份,是僱員的話,切換到 HTTPS
- Nginx 入口系統判斷 IP 來源,辦公室 IP 則切換到 HTTPS
- 改造辦公室網路,訪問站點時候,自動切換到 HTTPS
為了避免對線上業務系統、基礎設施造成影響,我採用了第三條方案。
說干就干,直接對公司網路出口設備是 ROSvia 動起刀子。
實現的原理如下:
- A:辦公室網路的 ?? 們請求站點 堆糖,美好生活研究所
- B:操作 RouterOS 的防火牆,將 dst 為 堆糖,美好生活研究所 IP 的 TCP 請求都 dst-nat 到新的一台 Nginx 伺服器 proxy.duitang.com
- C:這台 http://proxy.duitang.com 做過特別定製,將所有針對 *.http://duitang.com 請做一次 302 請求,將 堆糖,美好生活研究所 請求都轉發到 堆糖,美好生活研究所
- D:Client 收到 302 請求,重新請求 堆糖,美好生活研究所
- E:同 B
- F:http://proxy.duitang.com 將請求轉發到真正的 堆糖,美好生活研究所 伺服器
PS:這裡要小心的是,需要配置 http://proxy.duitang.com 的 resolver 避免 Nginx 內部請求。
流程圖:
這樣操作之後,在辦公室網路下,所有訪問公司網站的 HTTP 流量都會跳轉到 HTTPS。
PS:我原始方案想使用 ROS 的 L7 防火牆 直接抓 HTTP 包,match HTTP 頭數據, 再修改返回的 TCP 包。 但測試下來發現 ROS L7 Firewall 不支持寫 TCP 數據。 所以我最後只能使用中間跳轉的方案。
如果不是使用 ROS 的朋友也不用擔心,原理和流程已經講清楚了, 無非是使用 Cisco / Huawei 網路設備的防火牆命令實現需要的功能。
上篇文章發完之後,好幾個朋友問我 IP 證書供應商的事情。我就簡單說一下我了解的情況。
國內 SSL 證書供應商們會給他們兜售的產品起各種各樣花里胡哨的名字, 什麼超真、超強、超安、超快,國外有些企業也會搞什麼 Pro / Super / Premium / Essential, 其實 SSL 證書的區分,籠統來說就三種類型:DV / OV / EV, Domain Validation / Orgnization Validation / Extented Validation。 他們區別除了字面意思,就是所有權審核流程一個比一個麻煩。
想基於 IP 直接搞所有權審核,要看對應供應商的證書是否支持。 去年年底我做了一個調查,支持 IP 證書的廠家如下:
- Rapid SSL 不支持 ip
- wosign OV 級別支持
- OV 需要驗證 需要驗證申請單位的營業執照、等其他證明文件
- 瀏覽器支持情況
- Firefox 32 https://mozillacaprogram.secure.force.com/CA/IncludedCACertificateReport
- 交叉認證了 Startcom 的證書,可以支持老版本
- GlobalSign OV 支持
- $349 * 6 * 8 = 16752
- Securing a Public IP Address - SSL Certi...
- 需要認證 RIPE ip, Webupdates
- Geotrust 明確表示不支持 Frequently Asked Questions
現在 Wosign 爆了醜聞,於是支持 IP SSL 又少了一家。 只剩下 GlobalSign 了,但是 GlobalSign OV 又貴審核又麻煩, 不知道看到此文的大神們有沒有更好的推薦。
參考鏈接:
- domain name - SSL certificate for a public IP address? - Server Fault
- ROS Filter
- ROS NAT
- ROS Firewall L7
- How to block and redirect website - MikroTik RouterOS
- Mikrotik IP REDIRECT using firewall - MikroTik RouterOS
- Redirect all traffic from a spesific ip number to a web page - MikroTik RouterOS
原文鏈接: ?? 也談 HTTPS - 如何內測
歡迎關注我的微信公眾號:窺豹http://weixin.qq.com/r/dTt3b_bE97uIraIM925n (二維碼自動識別)
3a1ff193cee606bd1e2ea554a16353ee推薦閱讀: