產(chǎn)品經(jīng)理懂點技術(shù):什么是https,與http有什么區(qū)別
每天都在上網(wǎng),你有留意到網(wǎng)址有什么區(qū)別嗎?本文主要圍繞https和與http的異同點進行分析了探究,與大家分享。
某天,產(chǎn)品汪突然發(fā)現(xiàn),自家的產(chǎn)品在電腦瀏覽器上打開、在微信瀏覽器里面打開,都被提示“不安全”!這樣用戶看到該有多困擾啊。
Google Chrome對不安全網(wǎng)址的提示:
微信打開不安全網(wǎng)址時的提示“防欺詐盜號,請勿支付或輸入qq密碼”:
小汪就納悶了,我們什么都沒做啊,咋就不安全了呢?經(jīng)過一番研究,原來是自家產(chǎn)品的網(wǎng)址,都是http開頭的,而不是https開頭的,與程序猿哥哥溝通一番后,全部鏈接換成了https,就再也不會有這樣的提示了。
什么是http?
要搞清什么是https前,首先要了解什么是http。
HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是因特網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)傳輸協(xié)議,所有的WWW(萬維網(wǎng))文件都必須遵守這個標準。我們常見我網(wǎng)站、手機上的H5、甚至后臺服務(wù)器端很多的接口,都是采用HTTP協(xié)議實現(xiàn)。
所以我們需要上百度,就在瀏覽器中輸入http://www.baidu.com,就可以訪問百度的網(wǎng)站了。當然,一般的瀏覽器如果你沒有輸入http://,也會幫你自動補全這一部分的。
以谷歌瀏覽器為例,輸入訪問 sports.sina.com.cn/nba/ 并訪問新浪體育的NBA頻道,然后點一下地址欄,復(fù)制一下網(wǎng)址。隨便找個地方粘貼一遍:http://sports.sina.com.cn/nba/,就能發(fā)現(xiàn)前面已經(jīng)帶上了http://協(xié)議的標志。
http的傳輸,具有簡單、靈活的特點,但缺點是使用明文傳輸,請求和響應(yīng)不會對通信方進行確認、無法保護數(shù)據(jù)的完整性,傳輸內(nèi)容容易被竊取。
什么是https?為什么要用https
HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎(chǔ)上通過傳輸加密和身份認證保證了傳輸過程的安全性。
網(wǎng)頁內(nèi)容采用https傳輸后,用戶端和服務(wù)器端將利用“非對稱加密算法”交換秘鑰。服務(wù)器,也就是上圖中的小紅,先會生成一個公鑰、一個秘鑰。然后用證書封裝公鑰之后,把證書交給用戶,也就是上圖中的小明。
什么是證書?
CA證書,是指由證書頒發(fā)機構(gòu)(CA, Certificate Authority)即頒發(fā)數(shù)字證書的機構(gòu),頒布給對應(yīng)公司用的數(shù)字證書。CA是負責(zé)發(fā)放和管理數(shù)字證書的權(quán)威機構(gòu),并作為電子商務(wù)交易中受信任的第三方,承擔(dān)公鑰體系中公鑰的合法性檢驗的責(zé)任。一般來說,證書業(yè)務(wù)都是要收費的。
世界上很有多家證書頒發(fā)機構(gòu),程序猿哥哥們也可以生成自己的證書,但是很多證書是“不受信任的”,我們使用的微信、Google Chrome瀏覽器、iPhone的iOS系統(tǒng)等,都只選擇信任那些具備公信力的證書頒發(fā)機構(gòu)頒發(fā)的證書。
證書頒發(fā)機構(gòu)就像我們用的四通一達快遞一樣,大家選擇他們就是因為覺得信得過,快遞被掉包的可能性低。而那些小公司、或自行頒發(fā)的證書,就像一家沒聽說過的快遞公司一樣,大家去選擇他們收發(fā)快遞時,也不是不能用,但是碰上快遞被盜的概率就可能上升。
用戶在獲得服務(wù)器給的證書后,覺得這個證書值得信任,就打開它獲得里面的公鑰,與此同時,用戶端會生成一串隨機的字符串,然后用服務(wù)器的公鑰對字符串進行加密,把加密完的內(nèi)容發(fā)給服務(wù)費。
服務(wù)器在獲得用戶發(fā)送的密文后,用私鑰解密,就獲得了用戶端的密碼。這個過程就叫做非對稱加密。
服務(wù)器知道了用戶的密碼后,雙方傳輸數(shù)據(jù)前,都先用用戶生成的那個密碼對數(shù)據(jù)進行加密,然后再傳輸給對方,然后對方用這個密碼進行解密。加密解密都用同一個秘鑰的時候,這個過程就叫做對稱加密。
https的傳輸過程就是如此,先用非對稱加密傳輸讓雙方獲得一個對稱加密的秘鑰,然后雙方再用這個對稱秘鑰進行數(shù)據(jù)的傳輸加密,這樣能兼顧安全和快速。由于采用了密文傳輸,這時候第三方就不能竊聽用戶和服務(wù)器之間傳輸?shù)膬?nèi)容了,這時候網(wǎng)站的安全性就獲得了提高。
可是這時候,小汪又想起另外一個問題,平常出了bug,程序猿哥哥們總是在說抓包抓包的,要抓包看看到底傳了什么導(dǎo)致出錯的,我們網(wǎng)站用了https協(xié)議后,數(shù)據(jù)就被加密了,那傳了什么就不知道啦,那以后遇到bug怎么辦呢?然后程序員哥哥會心一笑說:其實并沒有什么,https也是可以抓包的,只需要安裝一個證書就可以了。
對https抓包的原理
前文提到了,服務(wù)器在把公鑰發(fā)送給用戶時,使用了一個證書來封裝公鑰,就像我們把東西寄給別人時,先用快遞袋裝好,再寄出去。如果我們選擇了一家不可靠的快遞公司,快遞員偷偷把快遞袋拆了,把里面的東西換了(也可能只是拆開看看里面都有啥),重新打包,再把快遞繼續(xù)送給對方,這就實現(xiàn)了https的抓包過程。
程序猿哥哥說的“裝一個證書”,其實就是信任抓包軟件的第三方證書,然后這個“黑心的快遞員”,就會作為一個不老實的中間人,竊取了用戶端生成的對稱秘鑰,然后不斷的記錄下用戶與服務(wù)器之間傳輸?shù)拿芪?,并且用竊取到的秘鑰進行解密,這樣就知道了雙方之間傳輸?shù)膬?nèi)容了。
小汪這時候恍然大悟,難怪網(wǎng)絡(luò)上經(jīng)常說,電腦和手機上不要亂裝軟件,網(wǎng)站雖然用了https加密傳輸?shù)膬?nèi)容,但是如果自己手機上裝了一個類似抓包軟件的病毒軟件,這時候就相當于把自己的賬號密碼、聊天內(nèi)容都拱手送了出去呀!
本文由 @iCheer 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
吃軟飯啦,廢物
好文章。。。樓主可否建議 woshipim 這邊的產(chǎn)品經(jīng)理 給網(wǎng)站加上 https 協(xié)議?
請參考 https://wen.woshipm.com/answer/detail/p996qd.html
能出一版通俗的嗎
有些ca是網(wǎng)上可以免費找到生成的吧,只是安全性好像不高
什么是證書? —這段中出現(xiàn)了了用戶、用戶端,是故意區(qū)分的還是都是用戶端??
都是指代用戶端
我們也是19年把公司官網(wǎng)加了s的
優(yōu)秀,把技術(shù)講得如此生動有趣
寫的不錯。作者最后說的不要亂裝軟件,并不是防止安裝類似抓包軟件的病毒,而是避免裝上了別人自己認證的CA證書,只要沒有對應(yīng)的CA證書,即使遇到偽造中間人,瀏覽器也會警報并中止鏈接。
?? ?? ??
說的很清晰,贊
?? 期待更多~~
?? ?? ??