產(chǎn)品經(jīng)理懂點(diǎn)技術(shù):什么是https,與http有什么區(qū)別

13 評(píng)論 12608 瀏覽 121 收藏 9 分鐘

每天都在上網(wǎng),你有留意到網(wǎng)址有什么區(qū)別嗎?本文主要圍繞https和與http的異同點(diǎn)進(jìn)行分析了探究,與大家分享。

某天,產(chǎn)品汪突然發(fā)現(xiàn),自家的產(chǎn)品在電腦瀏覽器上打開、在微信瀏覽器里面打開,都被提示“不安全”!這樣用戶看到該有多困擾啊。

Google Chrome對(duì)不安全網(wǎng)址的提示:

微信打開不安全網(wǎng)址時(shí)的提示“防欺詐盜號(hào),請(qǐng)勿支付或輸入qq密碼”:

小汪就納悶了,我們什么都沒(méi)做啊,咋就不安全了呢?經(jīng)過(guò)一番研究,原來(lái)是自家產(chǎn)品的網(wǎng)址,都是http開頭的,而不是https開頭的,與程序猿哥哥溝通一番后,全部鏈接換成了https,就再也不會(huì)有這樣的提示了。

什么是http?

要搞清什么是https前,首先要了解什么是http。

HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是因特網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)傳輸協(xié)議,所有的WWW(萬(wàn)維網(wǎng))文件都必須遵守這個(gè)標(biāo)準(zhǔn)。我們常見(jiàn)我網(wǎng)站、手機(jī)上的H5、甚至后臺(tái)服務(wù)器端很多的接口,都是采用HTTP協(xié)議實(shí)現(xiàn)。

所以我們需要上百度,就在瀏覽器中輸入http://www.baidu.com,就可以訪問(wèn)百度的網(wǎng)站了。當(dāng)然,一般的瀏覽器如果你沒(méi)有輸入http://,也會(huì)幫你自動(dòng)補(bǔ)全這一部分的。

以谷歌瀏覽器為例,輸入訪問(wèn) sports.sina.com.cn/nba/ 并訪問(wèn)新浪體育的NBA頻道,然后點(diǎn)一下地址欄,復(fù)制一下網(wǎng)址。隨便找個(gè)地方粘貼一遍:http://sports.sina.com.cn/nba/,就能發(fā)現(xiàn)前面已經(jīng)帶上了http://協(xié)議的標(biāo)志。

http的傳輸,具有簡(jiǎn)單、靈活的特點(diǎn),但缺點(diǎn)是使用明文傳輸,請(qǐng)求和響應(yīng)不會(huì)對(duì)通信方進(jìn)行確認(rèn)、無(wú)法保護(hù)數(shù)據(jù)的完整性,傳輸內(nèi)容容易被竊取。

什么是https?為什么要用https

HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標(biāo)的 HTTP 通道,在HTTP的基礎(chǔ)上通過(guò)傳輸加密和身份認(rèn)證保證了傳輸過(guò)程的安全性。

網(wǎng)頁(yè)內(nèi)容采用https傳輸后,用戶端和服務(wù)器端將利用“非對(duì)稱加密算法”交換秘鑰。服務(wù)器,也就是上圖中的小紅,先會(huì)生成一個(gè)公鑰、一個(gè)秘鑰。然后用證書封裝公鑰之后,把證書交給用戶,也就是上圖中的小明。

什么是證書?

CA證書,是指由證書頒發(fā)機(jī)構(gòu)(CA, Certificate Authority)即頒發(fā)數(shù)字證書的機(jī)構(gòu),頒布給對(duì)應(yīng)公司用的數(shù)字證書。CA是負(fù)責(zé)發(fā)放和管理數(shù)字證書的權(quán)威機(jī)構(gòu),并作為電子商務(wù)交易中受信任的第三方,承擔(dān)公鑰體系中公鑰的合法性檢驗(yàn)的責(zé)任。一般來(lái)說(shuō),證書業(yè)務(wù)都是要收費(fèi)的。

世界上很有多家證書頒發(fā)機(jī)構(gòu),程序猿哥哥們也可以生成自己的證書,但是很多證書是“不受信任的”,我們使用的微信、Google Chrome瀏覽器、iPhone的iOS系統(tǒng)等,都只選擇信任那些具備公信力的證書頒發(fā)機(jī)構(gòu)頒發(fā)的證書。

證書頒發(fā)機(jī)構(gòu)就像我們用的四通一達(dá)快遞一樣,大家選擇他們就是因?yàn)橛X(jué)得信得過(guò),快遞被掉包的可能性低。而那些小公司、或自行頒發(fā)的證書,就像一家沒(méi)聽說(shuō)過(guò)的快遞公司一樣,大家去選擇他們收發(fā)快遞時(shí),也不是不能用,但是碰上快遞被盜的概率就可能上升。

用戶在獲得服務(wù)器給的證書后,覺(jué)得這個(gè)證書值得信任,就打開它獲得里面的公鑰,與此同時(shí),用戶端會(huì)生成一串隨機(jī)的字符串,然后用服務(wù)器的公鑰對(duì)字符串進(jìn)行加密,把加密完的內(nèi)容發(fā)給服務(wù)費(fèi)。

服務(wù)器在獲得用戶發(fā)送的密文后,用私鑰解密,就獲得了用戶端的密碼。這個(gè)過(guò)程就叫做非對(duì)稱加密。

服務(wù)器知道了用戶的密碼后,雙方傳輸數(shù)據(jù)前,都先用用戶生成的那個(gè)密碼對(duì)數(shù)據(jù)進(jìn)行加密,然后再傳輸給對(duì)方,然后對(duì)方用這個(gè)密碼進(jìn)行解密。加密解密都用同一個(gè)秘鑰的時(shí)候,這個(gè)過(guò)程就叫做對(duì)稱加密。

https的傳輸過(guò)程就是如此,先用非對(duì)稱加密傳輸讓雙方獲得一個(gè)對(duì)稱加密的秘鑰,然后雙方再用這個(gè)對(duì)稱秘鑰進(jìn)行數(shù)據(jù)的傳輸加密,這樣能兼顧安全和快速。由于采用了密文傳輸,這時(shí)候第三方就不能竊聽用戶和服務(wù)器之間傳輸?shù)膬?nèi)容了,這時(shí)候網(wǎng)站的安全性就獲得了提高。

可是這時(shí)候,小汪又想起另外一個(gè)問(wèn)題,平常出了bug,程序猿哥哥們總是在說(shuō)抓包抓包的,要抓包看看到底傳了什么導(dǎo)致出錯(cuò)的,我們網(wǎng)站用了https協(xié)議后,數(shù)據(jù)就被加密了,那傳了什么就不知道啦,那以后遇到bug怎么辦呢?然后程序員哥哥會(huì)心一笑說(shuō):其實(shí)并沒(méi)有什么,https也是可以抓包的,只需要安裝一個(gè)證書就可以了。

對(duì)https抓包的原理

前文提到了,服務(wù)器在把公鑰發(fā)送給用戶時(shí),使用了一個(gè)證書來(lái)封裝公鑰,就像我們把東西寄給別人時(shí),先用快遞袋裝好,再寄出去。如果我們選擇了一家不可靠的快遞公司,快遞員偷偷把快遞袋拆了,把里面的東西換了(也可能只是拆開看看里面都有啥),重新打包,再把快遞繼續(xù)送給對(duì)方,這就實(shí)現(xiàn)了https的抓包過(guò)程。

程序猿哥哥說(shuō)的“裝一個(gè)證書”,其實(shí)就是信任抓包軟件的第三方證書,然后這個(gè)“黑心的快遞員”,就會(huì)作為一個(gè)不老實(shí)的中間人,竊取了用戶端生成的對(duì)稱秘鑰,然后不斷的記錄下用戶與服務(wù)器之間傳輸?shù)拿芪?,并且用竊取到的秘鑰進(jìn)行解密,這樣就知道了雙方之間傳輸?shù)膬?nèi)容了。

小汪這時(shí)候恍然大悟,難怪網(wǎng)絡(luò)上經(jīng)常說(shuō),電腦和手機(jī)上不要亂裝軟件,網(wǎng)站雖然用了https加密傳輸?shù)膬?nèi)容,但是如果自己手機(jī)上裝了一個(gè)類似抓包軟件的病毒軟件,這時(shí)候就相當(dāng)于把自己的賬號(hào)密碼、聊天內(nèi)容都拱手送了出去呀!

 

本文由 @iCheer 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 吃軟飯啦,廢物

    來(lái)自北京 回復(fù)
  2. 好文章。。。樓主可否建議 woshipim 這邊的產(chǎn)品經(jīng)理 給網(wǎng)站加上 https 協(xié)議?
    請(qǐng)參考 https://wen.woshipm.com/answer/detail/p996qd.html

    來(lái)自廣東 回復(fù)
  3. 能出一版通俗的嗎

    回復(fù)
  4. 有些ca是網(wǎng)上可以免費(fèi)找到生成的吧,只是安全性好像不高

    來(lái)自四川 回復(fù)
  5. 什么是證書? —這段中出現(xiàn)了了用戶、用戶端,是故意區(qū)分的還是都是用戶端??

    來(lái)自浙江 回復(fù)
    1. 都是指代用戶端

      來(lái)自廣東 回復(fù)
  6. 我們也是19年把公司官網(wǎng)加了s的

    回復(fù)
  7. 優(yōu)秀,把技術(shù)講得如此生動(dòng)有趣

    來(lái)自廣東 回復(fù)
  8. 寫的不錯(cuò)。作者最后說(shuō)的不要亂裝軟件,并不是防止安裝類似抓包軟件的病毒,而是避免裝上了別人自己認(rèn)證的CA證書,只要沒(méi)有對(duì)應(yīng)的CA證書,即使遇到偽造中間人,瀏覽器也會(huì)警報(bào)并中止鏈接。

    來(lái)自安徽 回復(fù)
    1. ?? ?? ??

      來(lái)自廣東 回復(fù)
  9. 說(shuō)的很清晰,贊

    來(lái)自江蘇 回復(fù)
  10. ?? 期待更多~~

    來(lái)自北京 回復(fù)
  11. ?? ?? ??

    來(lái)自北京 回復(fù)