每天都在上網,你有留意到網址有什麼區別嗎?本文主要圍繞https和與http的異同點進行分析瞭探究,與大傢分享。某天,產品汪突然發現,自傢的產品在電腦瀏覽器上打開、在微信瀏覽器裡面打開,都被提示“不安全”!這樣用戶看到該有多困擾啊。Google Chrome對不安全網址的提示:微信打開不安全網址時的提示“防欺詐盜號,請勿支付或輸入qq密碼”:小汪就納悶瞭,我們什麼都沒做啊,咋就不安全瞭呢?經過一番研究,原來是自傢產品的網址,都是http開頭的,而不是https開頭的,與程序猿哥哥溝通一番後,全部鏈接換成瞭https,就再也不會有這樣的提示瞭。什麼是http?要搞清什麼是https前,首先要瞭解什麼是http。HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最為廣泛的一種網絡傳輸協議,所有的WWW(萬維網)文件都必須遵守這個標準。我們常見我網站、手機上的H5、甚至後臺服務器端很多的接口,都是采用HTTP協議實現。所以我們需要上百度,就在瀏覽器中輸入http://www.baidu.com,就可以訪問百度的網站瞭。當然,一般的瀏覽器如果你沒有輸入http://,也會幫你自動補全這一部分的。以谷歌瀏覽器為例,輸入訪問 sports.sina.com.cn/nba/ 並訪問新浪體育的NBA頻道,然後點一下地址欄,復制一下網址。隨便找個地方粘貼一遍:http://sports.sina.com.cn/nba/,就能發現前面已經帶上瞭http://協議的標志。http的傳輸,具有簡單、靈活的特點,但缺點是使用明文傳輸,請求和響應不會對通信方進行確認、無法保護數據的完整性,傳輸內容容易被竊取。什麼是https?為什麼要用httpsHTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證瞭傳輸過程的安全性。網頁內容采用https傳輸後,用戶端和服務器端將利用“非對稱加密算法”交換秘鑰。服務器,也就是上圖中的小紅,先會生成一個公鑰、一個秘鑰。然後用證書封裝公鑰之後,把證書交給用戶,也就是上圖中的小明。什麼是證書?CA證書,是指由證書頒發機構(CA, Certificate Authority)即頒發數字證書的機構,頒佈給對應公司用的數字證書。CA是負責發放和管理數字證書的權威機構,並作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。一般來說,證書業務都是要收費的。世界上很有多傢證書頒發機構,程序猿哥哥們也可以生成自己的證書,但是很多證書是“不受信任的”,我們使用的微信、Google Chrome瀏覽器、iPhone的iOS系統等,都隻選擇信任那些具備公信力的證書頒發機構頒發的證書。證書頒發機構就像我們用的四通一達快遞一樣,大傢選擇他們就是因為覺得信得過,快遞被掉包的可能性低。而那些小公司、或自行頒發的證書,就像一傢沒聽說過的快遞公司一樣,大傢去選擇他們收發快遞時,也不是不能用,但是碰上快遞被盜的概率就可能上升。用戶在獲得服務器給的證書後,覺得這個證書值得信任,就打開它獲得裡面的公鑰,與此同時,用戶端會生成一串隨機的字符串,然後用服務器的公鑰對字符串進行加密,把加密完的內容發給服務費。服務器在獲得用戶發送的密文後,用私鑰解密,就獲得瞭用戶端的密碼。這個過程就叫做非對稱加密。服務器知道瞭用戶的密碼後,雙方傳輸數據前,都先用用戶生成的那個密碼對數據進行加密,然後再傳輸給對方,然後對方用這個密碼進行解密。加密解密都用同一個秘鑰的時候,這個過程就叫做對稱加密。https的傳輸過程就是如此,先用非對稱加密傳輸讓雙方獲得一個對稱加密的秘鑰,然後雙方再用這個對稱秘鑰進行數據的傳輸加密,這樣能兼顧安全和快速。由於采用瞭密文傳輸,這時候第三方就不能竊聽用戶和服務器之間傳輸的內容瞭,這時候網站的安全性就獲得瞭提高。可是這時候,小汪又想起另外一個問題,平常出瞭bug,程序猿哥哥們總是在說抓包抓包的,要抓包看看到底傳瞭什麼導致出錯的,我們網站用瞭https協議後,數據就被加密瞭,那傳瞭什麼就不知道啦,那以後遇到bug怎麼辦呢?然後程序員哥哥會心一笑說:其實並沒有什麼,https也是可以抓包的,隻需要安裝一個證書就可以瞭。對https抓包的原理前文提到瞭,服務器在把公鑰發送給用戶時,使用瞭一個證書來封裝公鑰,就像我們把東西寄給別人時,先用快遞袋裝好,再寄出去。如果我們選擇瞭一傢不可靠的快遞公司,快遞員偷偷把快遞袋拆瞭,把裡面的東西換瞭(也可能隻是拆開看看裡面都有啥),重新打包,再把快遞繼續送給對方,這就實現瞭https的抓包過程。程序猿哥哥說的“裝一個證書”,其實就是信任抓包軟件的第三方證書,然後這個“黑心的快遞員”,就會作為一個不老實的中間人,竊取瞭用戶端生成的對稱秘鑰,然後不斷的記錄下用戶與服務器之間傳輸的密文,並且用竊取到的秘鑰進行解密,這樣就知道瞭雙方之間傳輸的內容瞭。小汪這時候恍然大悟,難怪網絡上經常說,電腦和手機上不要亂裝軟件,網站雖然用瞭https加密傳輸的內容,但是如果自己手機上裝瞭一個類似抓包軟件的病毒軟件,這時候就相當於把自己的賬號密碼、聊天內容都拱手送瞭出去呀!本文由 @iCheer 原創發佈於人人都是產品經理,未經作者許可,禁止轉載。題圖來自Unsplash,基於CC0協議。
本文出自快速备案,转载时请注明出处及相应链接。