前端學習【HTTPS協(xié)議篇(一)】

前言:由于微信小程序要求必須通過 HTTPS 完成與服務端通信,若開發(fā)者選擇自行搭建 HTTPS 服務,那需要自行 SSL 證書申請、部署糕再,完成 https 服務搭建。故借此學習了一下HTTPS協(xié)議玉转。

什么是HTTPS突想?


HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),即安全套接字層超文本傳輸協(xié)議究抓,是以安全為目標的HTTP通道猾担,簡單講是HTTP的安全版。即HTTP下加入SSL層刺下,HTTPS的安全基礎是SSL绑嘹,因此加密的詳細內(nèi)容就需要SSL。 它是一個URI scheme(抽象標識符體系)橘茉,句法類同http:體系工腋。用于安全的HTTP數(shù)據(jù)傳輸姨丈。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)擅腰。這個系統(tǒng)的最初研發(fā)由網(wǎng)景公司(Netscape)進行蟋恬,并內(nèi)置于其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法√韫模現(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊筋现,例如交易支付方面。

HTTPS和HTTP的區(qū)別


超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務器之間傳遞信息箱歧。HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密一膨,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務器之間的傳輸報文呀邢,就可以直接讀懂其中的信息,因此HTTP協(xié)議不適合傳輸一些敏感信息豹绪,比如信用卡號价淌、密碼等。
為了解決HTTP協(xié)議的這一缺陷瞒津,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS蝉衣。為了數(shù)據(jù)傳輸?shù)陌踩琀TTPS在HTTP的基礎上加入了SSL協(xié)議巷蚪,SSL依靠證書來驗證服務器的身份病毡,并為瀏覽器和服務器之間的通信加密。
HTTPS和HTTP的區(qū)別主要為以下四點:
一屁柏、https協(xié)議需要到ca申請證書啦膜,一般免費證書很少,需要交費淌喻。
二僧家、http是超文本傳輸協(xié)議,信息是明文傳輸裸删,https 則是具有安全性的ssl加密傳輸協(xié)議八拱。
三、http和https使用的是完全不同的連接方式涯塔,用的端口也不一樣肌稻,前者是80,后者是443伤塌。
四灯萍、http的連接很簡單,是無狀態(tài)的每聪;HTTPS協(xié)議是由SSL+HTTP協(xié)議構建的可進行加密傳輸旦棉、身份認證的網(wǎng)絡協(xié)議齿风,比http協(xié)議安全。

什么是SSL/TLS绑洛?


SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security救斑,TLS)是為網(wǎng)絡通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對網(wǎng)絡連接進行加密真屯。
SSL (Secure Socket Layer)為Netscape所研發(fā)脸候,用以保障在Internet上數(shù)據(jù)傳輸之安全,利用數(shù)據(jù)加密(Encryption)技術绑蔫,可確保數(shù)據(jù)在網(wǎng)絡上之傳輸過程中不會被截取及竊聽运沦。目前一般通用之規(guī)格為40 bit之安全標準,美國則已推出128 bit之更高安全標準配深,但限制出境携添。只要3.0版本以上之I.E.或Netscape瀏覽器即可支持SSL。
當前版本為3.0篓叶。它已被廣泛地用于Web瀏覽器與服務器之間的身份認證和加密數(shù)據(jù)傳輸烈掠。
SSL協(xié)議位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持缸托。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上左敌,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮俐镐、加密等基本功能的支持矫限。SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前京革,通訊雙方進行身份認證奇唤、協(xié)商加密算法、交換加密密鑰等匹摇。

一咬扇、作用

不使用SSL/TLS的HTTP通信,就是不加密的通信廊勃。所有信息明文傳播懈贺,帶來了三大風險。

(1) 竊聽風險(eavesdropping):第三方可以獲知通信內(nèi)容坡垫。
(2) 篡改風險(tampering):第三方可以修改通信內(nèi)容梭灿。
(3) 冒充風險(pretending):第三方可以冒充他人身份參與通信。

SSL/TLS協(xié)議是為了解決這三大風險而設計的冰悠,希望達到:

(1) 所有信息都是加密傳播堡妒,第三方無法竊聽。
(2) 具有校驗機制溉卓,一旦被篡改皮迟,通信雙方會立刻發(fā)現(xiàn)搬泥。
(3) 配備身份證書,防止身份被冒充伏尼。

二忿檩、歷史

1994年,NetScape公司設計了SSL協(xié)議(Secure Sockets Layer)的1.0版爆阶,但是未發(fā)布燥透。
1995年,NetScape公司發(fā)布SSL 2.0版辨图,很快發(fā)現(xiàn)有嚴重漏洞班套。
1996年,SSL 3.0版問世故河,得到大規(guī)模應用孽尽。
1999年,互聯(lián)網(wǎng)標準化組織ISOC接替NetScape公司忧勿,發(fā)布了SSL的升級版[TLS](http://en.wikipedia.org/wiki/Secure_Sockets_Layer) 1.0版。
2006年和2008年瞻讽,TLS進行了兩次升級鸳吸,分別為TLS 1.1版和TLS 1.2版。最新的變動是2011年TLS 1.2的[修訂版](http://tools.ietf.org/html/rfc6176)速勇。

目前晌砾,應用最廣泛的是TLS 1.0,接下來是SSL 3.0烦磁。但是养匈,主流瀏覽器都已經(jīng)實現(xiàn)了TLS 1.2的支持。
TLS 1.0通常被標示為SSL 3.1都伪,TLS 1.1為SSL 3.2呕乎,TLS 1.2為SSL 3.3。

三陨晶、基本的運行過程

(1) 客戶端向服務器端索要并驗證公鑰猬仁。
(2) 雙方協(xié)商生成"對話密鑰"。
(3) 雙方采用"對話密鑰"進行加密通信先誉。

上面過程的前兩步湿刽,又稱為"握手階段"(handshake)。

握手階段的詳細過程

** 第一步 客戶端發(fā)出請求(ClientHello)**

(1) 支持的協(xié)議版本褐耳,比如TLS 1.0版诈闺。
(2) 一個客戶端生成的隨機數(shù),稍后用于生成"對話密鑰"铃芦。
(3) 支持的加密方法雅镊,比如RSA公鑰加密襟雷。
(4) 支持的壓縮方法。

** 第二步 服務器回應(SeverHello)**

(1) 確認使用的加密通信協(xié)議版本漓穿,比如TLS 1.0版本嗤军。如果瀏覽器與服務器支持的版本不一致,服務器關閉加密通信晃危。
(2) 一個服務器生成的隨機數(shù)叙赚,稍后用于生成"對話密鑰"。
(3) 確認使用的加密方法僚饭,比如RSA公鑰加密震叮。
(4) 服務器證書。

** 第三步 客戶端回應**

(1) 一個隨機數(shù)鳍鸵。該隨機數(shù)用服務器公鑰加密苇瓣,防止被竊聽。
(2) 編碼改變通知偿乖,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送击罪。
(3) 客戶端握手結束通知,表示客戶端的握手階段已經(jīng)結束贪薪。這一項同時也是前面發(fā)送的所有內(nèi)容的hash值媳禁,用來供服務器校驗。

** 第四步 服務器的最后回應**

(1)編碼改變通知画切,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送竣稽。
(2)服務器握手結束通知,表示服務器的握手階段已經(jīng)結束霍弹。這一項同時也是前面發(fā)送的所有內(nèi)容的hash值毫别,用來供客戶端校驗。

至此典格,整個握手階段全部結束岛宦。接下來,客戶端與服務器進入加密通信钝计,就完全是使用普通的HTTP協(xié)議恋博,只不過用"會話密鑰"加密內(nèi)容。

HTTPS的普及之路


事實上 HTTPS 1995 年就誕生了私恬,是一個非常古老债沮、成熟的協(xié)議。同時又能很好地防止內(nèi)容劫持本鸣,保護用戶隱私疫衩。但是為什么一直到今天,還有大部分的網(wǎng)站不支持 HTTPS荣德,只使用 HTTP 呢?

占比

影響 HTTPS 普及的主要原因可以概括為兩個字:「慢」和「貴」闷煤。

(1)慢
在未經(jīng)任何優(yōu)化的情況下童芹,HTTPS 會嚴重降低用戶的訪問速度。主要因素包括:

網(wǎng)絡耗時鲤拿。由于協(xié)議的規(guī)定假褪,必須要進行的網(wǎng)絡傳輸。比如 SSL 完全握手近顷,302 跳轉等生音。最壞情況下可能要增加 7 個 RTT。

SSL握手

計算耗時窒升。無論是客戶端還是服務端缀遍,都需要進行對稱加解密,協(xié)議解析饱须,私鑰計算域醇,證書校驗等計算,增加大量的計算時間蓉媳。

(2)貴

HTTPS 的貴譬挚,主要體現(xiàn)在如下三方面:

1、服務器成本酪呻。HTTPS 的私鑰計算會導致服務端性能的急劇下降殴瘦,甚至不到 HTTP 協(xié)議的十分之一,也就是說号杠,如果 HTTP 的性能是 10000cps,HTTPS 的性能可能只有幾百 cps丰歌,會增加數(shù)倍甚至數(shù)十倍的服務器成本姨蟋。

2、證書成本立帖。根據(jù)證書個數(shù)及證書類型眼溶,一年可能需要花費幾百到幾百萬不等的證書成本。

3晓勇、開發(fā)和運維成本堂飞。HTTPS 協(xié)議比較復雜,openssl 的開源實現(xiàn)也經(jīng)常發(fā)生安全BUG绑咱, 包括協(xié)議的配置绰筛,證書的更新,過期監(jiān)控描融,客戶端的兼容等一系列問題都需要具備專業(yè)背景的技術人員跟進處理铝噩。

(完)

其實不僅僅是小程序,蘋果 iOS 平臺窿克,Google Android 在 2017 也逐步強制要求開發(fā)者使用 HTTPS 接入骏庸。在下一章毛甲,我們將學習如何搭建HTTPS服務,敬請期待具被!

參考文獻 :

百度百科
SSL/TLS協(xié)議運行機制的概述——阮一峰

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玻募,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子一姿,更是在濱河造成了極大的恐慌七咧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啸蜜,死亡現(xiàn)場離奇詭異坑雅,居然都是意外死亡,警方通過查閱死者的電腦和手機衬横,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門裹粤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜂林,你說我怎么就攤上這事遥诉。” “怎么了噪叙?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵矮锈,是天一觀的道長。 經(jīng)常有香客問我睁蕾,道長苞笨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任子眶,我火速辦了婚禮瀑凝,結果婚禮上,老公的妹妹穿的比我還像新娘臭杰。我一直安慰自己粤咪,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布渴杆。 她就那樣靜靜地躺著寥枝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪磁奖。 梳的紋絲不亂的頭發(fā)上囊拜,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音比搭,去河邊找鬼艾疟。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蔽莱。 我是一名探鬼主播弟疆,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盗冷!你這毒婦竟也來了怠苔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤仪糖,失蹤者是張志新(化名)和其女友劉穎柑司,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锅劝,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡攒驰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了故爵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玻粪。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诬垂,靈堂內(nèi)的尸體忽然破棺而出劲室,到底是詐尸還是另有隱情,我是刑警寧澤结窘,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布很洋,位于F島的核電站,受9級特大地震影響隧枫,放射性物質(zhì)發(fā)生泄漏喉磁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一官脓、第九天 我趴在偏房一處隱蔽的房頂上張望线定。 院中可真熱鬧,春花似錦确买、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至派草,卻和暖如春搀缠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背近迁。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工艺普, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓歧譬,卻偏偏與公主長得像岸浑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瑰步,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容