前言
前端面試少不了問http和https的區(qū)別,今天就嘗試深入了解下到底什么是https
1.http與https
1.1?HTTP和HTTPS的基本概念
HTTP:是互聯(lián)網(wǎng)上應用最為廣泛的一種網(wǎng)絡協(xié)議恒削,是一個客戶端和服務器端請求和應答的標準(TCP)钓丰,用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協(xié)議携丁,它可以使瀏覽器更加高效,使網(wǎng)絡傳輸減少李茫。
HTTPS:是以安全為目標的HTTP通道肥橙,簡單講是HTTP的安全版存筏,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL椭坚,因此加密的詳細內(nèi)容就需要SSL藕溅。
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩樱涣硪环N就是確認網(wǎng)站的真實性考阱。
1.2 HTTP與HTTPS有什么區(qū)別?
HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的乞榨,也就是明文的吃既,因此使用HTTP協(xié)議傳輸隱私信息非常不安全跨细,為了保證這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設計了SSL(Secure Sockets Layer)協(xié)議用于對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進行加密震叙,從而就誕生了HTTPS媒楼。簡單來說戚丸,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡協(xié)議,要比http協(xié)議安全对人。
HTTPS和HTTP的區(qū)別主要如下:
1拂共、https協(xié)議需要到ca申請證書宜狐,一般免費證書較少抚恒,因而需要一定費用络拌。
2春贸、http是超文本傳輸協(xié)議,信息是明文傳輸逸嘀,https則是具有安全性的ssl加密傳輸協(xié)議允粤。
3类垫、http和https使用的是完全不同的連接方式悉患,用的端口也不一樣,前者是80跪削,后者是443迂求。
4碾盐、http的連接很簡單揩局,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸烹玉、身份認證的網(wǎng)絡協(xié)議阐滩,比http協(xié)議安全。
有些細節(jié)看不懂沒關(guān)系继效,你只要知道装获,http是明文傳輸,很容易被黑客竊取凡简,而https是加密傳輸秤涩,比較安全
2.SSL/TLS
https比http安全的原因就是它在TCP協(xié)議之上加入了SSL(Secure Sockets Layer 安全套接字協(xié)議)
眾所周知司抱,http(s)協(xié)議是工作在應用層,而其下就是傳輸層浊竟,而http(s)協(xié)議是基于傳輸層中的TCP協(xié)議之上的振定,就是說http(s)的數(shù)據(jù)傳輸是要在TCP三次握手后肉拓,也就是建立連接的基礎(chǔ)上才能進行http(s)通信
原本的http協(xié)議直接就是TCP握手完,就用明文傳輸數(shù)據(jù)
而https協(xié)議則是在TCP協(xié)議之上加入了SSL加密協(xié)議卑惜,在傳輸數(shù)據(jù)之前先進行加密
那TLS(Transport Layer Security)又是什么鬼呢露久?
簡單點說毫痕,TLS就是規(guī)范化的SSL
早期TCP上的https傳輸用的加密協(xié)議是SSL,等到SSL發(fā)展到3.0之后栏笆,有一個國際機構(gòu)將其標準化蛉加,標準化之后的SSL就叫做TLS七婴,不過人們還是習慣叫SSL,現(xiàn)在大部分用的就是TLS修肠,不過大家喜歡叫做SSL而已,就一回事嵌施。
3.對稱加密/非對稱加密
SSL是加密協(xié)議饲化,那它是怎么加密的呢?
在正式介紹之前吗伤,現(xiàn)來了解下密碼學的基本概念
1.密鑰:就是用來加密解密的東西
2.對稱密鑰:這是對于交流雙方來說的吃靠,就是說交流雙方用來加密解密的工具是一樣的,舉個例子足淆,比如說我想寫一封情書給女神巢块,但我不想別人竊取到我寫了什么,我就和女神約定巧号,我會用咸魚來加密族奢,你用咸魚就可以解密
3.非對稱密鑰:分為公鑰和私鑰,注意公鑰和私鑰的概念只在非對稱加密中出現(xiàn)丹鸿,為了說明什么是公鑰和私鑰越走,舉個例子,假設有一個檢舉機構(gòu)靠欢,它接受廣大人民群眾的實名舉報信廊敌,但為了不讓舉報人的名字泄露,就要進行加密秧廉,于是他就會生成一對公鑰和私鑰,把公鑰告訴群眾区丑,說誰想舉報就用這個公鑰加密,只有我有私鑰可以解密,大家放心旺罢。
在此之上蠢熄,加密方案分為兩種:
對稱加密:雙方使用的同一個密鑰,既可以加密又可以解密节吮,這種加密方法稱為對稱加密,也稱為單密鑰加密。
非對稱加密:一對密鑰由公鑰和私鑰組成(可以使用很多對密鑰)。私鑰解密公鑰加密數(shù)據(jù)诈泼,公鑰解密私鑰加密數(shù)據(jù)(私鑰公鑰可以互相加密解密)檬果。
擴展:
常見的對稱加密算法:AES,DES,3DES
常見的非對稱加密算法:RSA,DSA,ECC
4.數(shù)字簽名,數(shù)字證書
4.1 數(shù)字簽名
回到剛才實名舉報的例子偏灿,舉報信的傳輸是安全了(因為只有檢舉機構(gòu)的私鑰能解密)扁藕,那如果檢舉機構(gòu)想對舉報人回信,在舉報人的角度怎么能證實收到的回信是檢舉機構(gòu)發(fā)的呢?
在現(xiàn)實中很簡單,不就蓋個章嘛(不考慮被偽造的情況)
這個章在密碼學里叫數(shù)字簽名,既表明自己身份唯一的標識
那這個簽名怎么簽呢?
假如我是檢舉機構(gòu),我的回信叫l(wèi)etter
1.letter內(nèi)容+Hash函數(shù)——>摘要
2.摘要+私鑰——>數(shù)字簽名
3.將數(shù)字簽名放在letter內(nèi)容的下面發(fā)送給舉報人
注意:在數(shù)字簽名的過程中隘击,只有私鑰是具有唯一性的莺禁,hash函數(shù)是公開的,letter內(nèi)容可能被截獲修改!
對于舉報人,關(guān)心的只有兩點:1.信是不是檢舉機構(gòu)寄的平斩? 2.信的內(nèi)容有沒有被黑客修改侈沪?
如果上訴兩點一旦確認為 1.是 2.沒有? 那這封信就無誤了。
那怎么求證呢?我們看舉報人收到了什么內(nèi)容滥比,有信的內(nèi)容和數(shù)字簽名
對于第一點:1.信是不是檢舉機構(gòu)寄的?
因為私鑰是檢舉機構(gòu)的唯一標識屈雄,只能通過驗證數(shù)字簽名來求證
數(shù)字簽名+公鑰奶赔,如果能成功得到摘要就確定數(shù)字簽名沒有被偽造站刑,既信是檢舉機構(gòu)寄的
對于第二點:?2.信的內(nèi)容有沒有被黑客修改堕汞?
前文說過晃琳,hash是公開的,如果上面驗證了數(shù)字簽名的正確性视哑,那摘要就是可以反應原文的,所以
letter內(nèi)容+hash 得到摘要,再與上面解密數(shù)字簽名的摘要對比债蜜,一樣的話就是沒有修改
4.2 數(shù)字證書
有朋友說卦停,有數(shù)字簽名,雙方不就可以安全通信了嗎,那數(shù)字證書是什么案站?
上面一切可靠通信的前提是躬审,舉報人手持的公鑰和檢舉單位的私鑰是一對
當舉報人手上的公鑰被惡意替換成某詐騙公司的公鑰之后,詐騙公司就可以偽裝成檢舉機構(gòu)和舉報人通信而不被發(fā)現(xiàn)蟆盐,因為詐騙公司本身就擁有自己的私鑰承边,而且把舉報人的公鑰替換成了自己的公鑰,而舉報人根本發(fā)現(xiàn)不了石挂,還以為自己跟檢舉機構(gòu)安全保密的通信呢博助。
這時候就要數(shù)字證書登場了!
證書中心(certificate authority痹愚,簡稱CA)用自己的私鑰富岳,檢舉機構(gòu)的公鑰和一些相關(guān)信息一起加密,生成"數(shù)字證書"(Digital Certificate)拯腮。
數(shù)字證書保證了檢舉機構(gòu)和對應公鑰的匹配性
就是說窖式,檢舉機構(gòu)下次寄信時帶上這個數(shù)字證書,舉報人用CA的公鑰解密的到檢舉機構(gòu)的公鑰动壤,和客戶端(瀏覽器)的"證書管理器"萝喘,有"受信任的根證書頒發(fā)機構(gòu)"列表對比,如果在上面就可以,不在上面就是假的公鑰阁簸。
擴展:有的朋友就說了弦蹂,那如果CA的公鑰被替換了怎么辦?
有興趣的朋友可以去了解一下這種情況强窖,稱為中間人攻擊凸椿,既黑客組織同時冒充服務端和客戶端進行雙向偽裝通信
5.SSL在http的應用
言歸正傳,說回SSL
SSL加密過程
1.瀏覽器向服務器發(fā)起https請求
2.服務器返回公鑰和數(shù)字證書
3.瀏覽器檢查證書是不是由可以信賴的機構(gòu)頒發(fā)的翅溺,確認證書有效和此證書是此網(wǎng)站的
4.使用公鑰加密了一個隨機對稱密鑰脑漫,包括加密的URL一起發(fā)送到服務器
5.服務器用自己的私匙解密了你發(fā)送的鑰匙。然后用這把對稱加密的鑰匙給你請求的URL鏈接解密
6.服務器用你發(fā)的對稱鑰匙給你請求的網(wǎng)頁加密咙崎。你也有相同的鑰匙就可以解密發(fā)回來的網(wǎng)頁了
一句話總結(jié):
連接的時候使用非對稱加密优幸,確認服務器正確無誤后,生成對稱密鑰褪猛,在以后的通信中采用對稱加密网杆,加快速度。
參考文章
https://www.cnblogs.com/hai-blog/p/8311671.html