HTTP和HTTPS

HTTP

圖解HTTP:https://blog.csdn.net/zephyr999/article/details/80055420
HTTP1.0蟀给、HTTP1.1和HTTP2.0的區(qū)別:http://www.reibang.com/p/be29d679cbff

1.1 HTTP的發(fā)送與傳輸流程

HTTP的發(fā)送與傳輸流程

1.2 各種協(xié)議與HTTP協(xié)議的關(guān)系

各種協(xié)議與HTTP協(xié)議的關(guān)系
1.3 端口號
  • HTTP協(xié)議請求的是80端口,HTTPS請求的是443端口
1.4 HTTP是不保存狀態(tài)的協(xié)議
  • 一般只有使用POST方法的請求,有請求體跋理,而GET方法是沒有請求體的拍霜。
  • HTTP是不保存狀態(tài)的協(xié)議,HTTP 協(xié)議自身不具備保存之前發(fā)送過的請求或響應的功能薪介。


2. HTTP報文格式

HTTP報文又分為請求報文和響應報文祠饺,兩者的格式稍有區(qū)別。

2.1 請求報文

  • 請求行:方法汁政、URI道偷、協(xié)議版本
  • 首部字段:一些鍵值對
  • 空行
  • 請求體:一般POST方法的參數(shù)放在這里,GET方法一般沒有請求體
請求報文格式

2.2 響應報文

  • 狀態(tài)行:協(xié)議版本记劈、狀態(tài)碼勺鸦、原因短句
  • 首部字段:響應的時間、類型等字段
  • 空行
  • 請求體:響應的內(nèi)容一般放這里
響應報文

HTTPS

1. 你需要提前知道的概念

1.1 對稱加密和非對稱加密
1.2 公鑰和私鑰的作用
1.3 數(shù)字證書

CA 證書其實就是數(shù)字證書目木,是由 CA 機構(gòu)頒發(fā)的换途。至于 CA 機構(gòu)的權(quán)威性,那么是毋庸置疑的,所有人都是信任它的词顾。CA 證書內(nèi)一般會包含以下內(nèi)容:

  • 證書的頒發(fā)機構(gòu)胀葱、版本
  • 證書的使用者
  • 證書的公鑰
  • 證書的有效時間
  • 證書的數(shù)字簽名 Hash 值和簽名 Hash 算法

CA 證書中的 Hash 值,其實是用證書的私鑰進行加密后的值(證書的私鑰不在 CA 證書中)懈息。然后客戶端得到證書后,利用證書中的公鑰去解密該 Hash 值摹恰,得到 Hash-a 辫继;然后再利用證書內(nèi)的簽名 Hash 算法去生成一個 Hash-b 。最后比較 Hash-a 和 Hash-b 這兩個的值俗慈。如果相等姑宽,那么證明了該證書是對的,服務端是可以被信任的闺阱;如果不相等炮车,那么就說明該證書是錯誤的,可能被篡改了馏颂,瀏覽器會給出相關(guān)提示示血,無法建立起 HTTPS 連接。除此之外救拉,還會校驗 CA 證書的有效時間和域名匹配等难审。

2. HTTPS請求的流程如下

HTTPS的流程

2.1 對圖上的每一步進行解釋

  1. 客戶端向服務器發(fā)起HTTPS請求
  2. 服務器生成一對公鑰和私鑰,公鑰用來給客戶端加密亿絮,而自己則用私鑰解密告喊。公鑰需要放在證書中一起返回給客戶端麸拄,而私鑰是絕對保密的,不會告訴任何人黔姜。
  3. 服務器返回一個數(shù)字證書CA(CA中包括了一個公鑰和證書的其他信息)
  4. 首先拢切,客戶端要對數(shù)字證書進行驗證(具體如何驗證后面再講)。如果驗證沒通過秆吵,則發(fā)出警告:這個https請求有危險淮椰!如果通過了,客戶端會生成一個隨機字符串纳寂,后面稱這個隨機字符串為random key(注意:這個random key是用來進行接下來的對稱加密操作的主穗!和公鑰、私鑰的作用不同1形摺)忽媒,并通過客戶端數(shù)字證書中的公鑰進行一次加密。
  5. 將剛才加密過的random key再次傳給服務器腋粥。(因為是被公鑰加密過的晦雨,所以只有擁有私鑰的人才能解密!所以這里即使被人攔截到了隘冲,別人也不知道用的什么random keyD智啤)
  6. 接下來是服務器解密random key的過程,服務器先用私鑰解析出服務器傳的random key对嚼,獲得random key后夹抗,再把服務器請求的資源(可能是HTML界面,或者請求的數(shù)據(jù))用這個random key進行加密纵竖。注意:這次加密是對稱加密,由于服務器和客戶端都知道這個random key杏愤,所以他們可以用這個random key進行密文通信靡砌!
  7. 服務器將加密好的資源返回給客戶端
  8. 客戶端進行對稱解密,獲得資源

3. 為什么要對稱和非對稱兩套加密方法珊楼?

  • 一句話總結(jié):為了安全和效率的綜合考量通殃。
  • 如果客戶端直接使用公鑰進行加密,服務端用私鑰解密厕宗,也能實現(xiàn)通信画舌,而且不怕信息被攔截,但是非對稱加密需要大量計算已慢,會占用很多硬件資源曲聂,所以效率太低。
  • 所以為了提升效率佑惠,非對稱加密朋腋,只用來傳輸接下來對稱加密所需要的秘鑰齐疙,再用秘鑰進行對稱加密,既保證了安全旭咽,有提高了效率

4. HTTPS真的安全嗎贞奋?

既然Https那么安全,那為什么用抓包工具還是可以看到里面的數(shù)據(jù)穷绵。這里需要對抓包過程的原理做一個簡單的介紹轿塔,抓包,其實就是中間人攻擊仲墨,在網(wǎng)絡請求過程中催训,抓包工具充當著客戶端/服務端的角色,當客戶端請求數(shù)據(jù)時宗收,抓包工具將請求進行攔截漫拭,然后構(gòu)造數(shù)據(jù)(冒充客戶端)向服務端發(fā)起請求,此時服務端會返回自己的公鑰證書混稽,然后抓包工具將服務端的公鑰證書替換成自己的公鑰證書采驻,隨后將數(shù)據(jù)返回可客戶端(此時充當服務端的角色)⌒傺客戶端拿到公鑰證書后礼旅,使用公鑰證書中的公鑰對Pre-master secret進行加密,并發(fā)送給服務端洽洁,發(fā)送過程中又被抓包工具攔截痘系,由于客戶端使用的公鑰其實就是抓包工具生成的證書公鑰,所以抓包工具只需要使用自己的私鑰進行解密即可拿到真實的Pre-master secret(因為抓包工具在之前的過程中已經(jīng)拿到了雙方的隨機碼饿自,所以到這一步抓包工具相當于已經(jīng)拿到了后續(xù)通信使用的密鑰)汰翠,隨后抓包工具使用從服務端接收到的公鑰證書中的公鑰對Pre-master secret進行加密,然后發(fā)送給服務端昭雌。隨后的通信過程雖然進行了加密复唤,但抓包工具已經(jīng)生成了密鑰(master secret),所以可以查看Https的通信內(nèi)容烛卧。一圖以蔽之:

Charles抓包

從抓包的原理可以看出佛纫,對Https進行抓包,需要PC端和手機端同時安裝證書总放。
既然這么容易被抓包呈宇,那Https會不會顯得很雞肋?其實并不會局雄,能抓包甥啄,那是因為你信任抓包工具,手機上安裝了與之對應的證書哎榴,你要不安裝證書型豁,你抓一個試試僵蛛。而且安全這個課題,是在攻防中求發(fā)展迎变,沒有最安全充尉,只有更安全,所以將攻擊的成本提高了衣形,就間接達到了安全的目標驼侠。

4.1 如何對Https進行抓包

這里以Charles4.0為例,對Https進行抓包:

  1. 依次點擊菜單Help -> SSL Proxying -> Install Charles Root Certificate安裝PC證書谆吴;
  2. 依次點擊菜單Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Romote Browser, 此時會彈出一個框倒源,提示讓你去 chls.pro/ssl 去下載證書,下載完成后進行安裝即可
  3. 依次點擊菜單Proxy -> SSL Proxying Settings, 選中頁面中的Enable SSL Proxying, 然后點擊下面的add, 在彈出的框中的Host編輯框中填寫. (表示可對所有Https請求進行抓包)句狼,端口填寫443笋熬,點擊OK;
  4. 手機設置代理(你的電腦的IP地址腻菇,端口默認為8888)即可進行抓包胳螟;

鏈接:https://juejin.im/post/6844903602494898183
作者:Liberuman
來源:掘金

HTTP1.0和HTTP2.0的區(qū)別

總的來說區(qū)別就是:

  • 新的二進制格式(Binary Format),HTTP1.x的解析是基于文本筹吐√撬剩基于文本協(xié)議的格式解析存在天然缺陷,文本的表現(xiàn)形式有多樣性丘薛,要做到健壯性考慮的場景必然很多嘉竟,二進制則不同,只認0和1的組合洋侨∩崛牛基于這種考慮HTTP2.0的協(xié)議解析決定采用二進制格式,實現(xiàn)方便且健壯凰兑。
  • 多路復用(MultiPlexing)妥粟,即連接共享,即每一個request都是是用作連接共享機制的吏够。一個request對應一個id,這樣一個連接上可以有多個request滩报,每個連接的request可以隨機的混雜在一起锅知,接收方可以根據(jù)request的 id將request再歸屬到各自不同的服務端請求里面。
  • header壓縮脓钾,如上文中所言售睹,對前面提到過HTTP1.x的header帶有大量信息,而且每次都要重復發(fā)送可训,HTTP2.0使用encoder來減少需要傳輸?shù)膆eader大小昌妹,通訊雙方各自cache一份header fields表捶枢,既避免了重復header的傳輸,又減小了需要傳輸?shù)拇笮 ?/li>
  • 服務端推送(server push)飞崖,同SPDY一樣烂叔,HTTP2.0也具有server push功能。

1. 多路復用和二進制幀

多路復用允許單一的 HTTP/2 連接同時發(fā)起多重的請求-響應消息固歪。如下圖:


多路復用

從這張圖可以看出蒜鸡,請求index.html頁面的時候,瀏覽器會去請求style.css和scripts.js的文件牢裳。左邊的圖是順序加載兩個個文件的逢防,右邊則是并行加載兩個文件。

3. 主動push

服務器推送
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒲讯,一起剝皮案震驚了整個濱河市忘朝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌判帮,老刑警劉巖局嘁,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脊另,居然都是意外死亡导狡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門偎痛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旱捧,“玉大人,你說我怎么就攤上這事踩麦∶渡模” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵谓谦,是天一觀的道長贫橙。 經(jīng)常有香客問我,道長反粥,這世上最難降的妖魔是什么卢肃? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮才顿,結(jié)果婚禮上莫湘,老公的妹妹穿的比我還像新娘。我一直安慰自己郑气,他們只是感情好幅垮,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尾组,像睡著了一般忙芒。 火紅的嫁衣襯著肌膚如雪示弓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天呵萨,我揣著相機與錄音奏属,去河邊找鬼。 笑死甘桑,一個胖子當著我的面吹牛拍皮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跑杭,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼铆帽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了德谅?” 一聲冷哼從身側(cè)響起爹橱,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窄做,沒想到半個月后愧驱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡椭盏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年组砚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掏颊。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡糟红,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乌叶,到底是詐尸還是另有隱情盆偿,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布准浴,位于F島的核電站事扭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乐横。R本人自食惡果不足惜求橄,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葡公。 院中可真熱鬧谈撒,春花似錦、人聲如沸匾南。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛆楞。三九已至溯乒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豹爹,已是汗流浹背裆悄。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留臂聋,地道東北人光稼。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像孩等,于是被迫代替她去往敵國和親艾君。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355