產品經理懂點技術:什么是https,與http有什么區別

13 評論 12584 瀏覽 121 收藏 9 分鐘

每天都在上網,你有留意到網址有什么區別嗎?本文主要圍繞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?為什么要用https

HTTPS (全稱: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協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 吃軟飯啦,廢物

    來自北京 回復
  2. 好文章。。。樓主可否建議 woshipim 這邊的產品經理 給網站加上 https 協議?
    請參考 https://wen.woshipm.com/answer/detail/p996qd.html

    來自廣東 回復
  3. 能出一版通俗的嗎

    回復
  4. 有些ca是網上可以免費找到生成的吧,只是安全性好像不高

    來自四川 回復
  5. 什么是證書? —這段中出現了了用戶、用戶端,是故意區分的還是都是用戶端??

    來自浙江 回復
    1. 都是指代用戶端

      來自廣東 回復
  6. 我們也是19年把公司官網加了s的

    回復
  7. 優秀,把技術講得如此生動有趣

    來自廣東 回復
  8. 寫的不錯。作者最后說的不要亂裝軟件,并不是防止安裝類似抓包軟件的病毒,而是避免裝上了別人自己認證的CA證書,只要沒有對應的CA證書,即使遇到偽造中間人,瀏覽器也會警報并中止鏈接。

    來自安徽 回復
    1. ?? ?? ??

      來自廣東 回復
  9. 說的很清晰,贊

    來自江蘇 回復
  10. ?? 期待更多~~

    來自北京 回復
  11. ?? ?? ??

    來自北京 回復