超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息封寞,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密确封,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文,就可以直接讀懂其中的信息,因此廊宪,HTTP協(xié)議不適合傳輸一些敏感信息,比如:信用卡號(hào)女轿、密碼等支付信息箭启。
為了解決HTTP協(xié)議的這一缺陷,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS谈喳,為了數(shù)據(jù)傳輸?shù)陌踩崃遥琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,SSL依靠證書來驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密赏僧。
一大猛、HTTP和HTTPS的基本概念
HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個(gè)客戶端和服務(wù)器端請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP)淀零,用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議挽绩,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少驾中。
HTTPS:是以安全為目標(biāo)的HTTP通道唉堪,簡(jiǎn)單講是HTTP的安全版,即HTTP下加入SSL層肩民,HTTPS的安全基礎(chǔ)是SSL唠亚,因此加密的詳細(xì)內(nèi)容就需要SSL。
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道持痰,來保證數(shù)據(jù)傳輸?shù)陌踩钏眩涣硪环N就是確認(rèn)網(wǎng)站的真實(shí)性。
二工窍、HTTP與HTTPS有什么區(qū)別割卖?
HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的患雏,因此使用HTTP協(xié)議傳輸隱私信息非常不安全鹏溯,為了保證這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設(shè)計(jì)了SSL(Secure Sockets Layer)協(xié)議用于對(duì)HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密淹仑,從而就誕生了HTTPS丙挽。
簡(jiǎn)單來說,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸攻人、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議取试,要比http協(xié)議安全。
SSL四次握手過程怀吻,如下圖所示:
- 客戶端請(qǐng)求建立SSL鏈接瞬浓,并向服務(wù)端發(fā)送一個(gè)隨機(jī)數(shù)–Client random和客戶端支持的加密方法,比如RSA公鑰加密蓬坡,此時(shí)是明文傳輸猿棉。
- 服務(wù)端回復(fù)一種客戶端支持的加密方法、一個(gè)隨機(jī)數(shù)–Server random屑咳、授信的服務(wù)器證書和非對(duì)稱加密的公鑰萨赁。
- 客戶端收到服務(wù)端的回復(fù)后利用服務(wù)端的公鑰,加上新的隨機(jī)數(shù)–Premaster secret 通過服務(wù)端下發(fā)的公鑰及加密方法進(jìn)行加密兆龙,發(fā)送給服務(wù)器杖爽。
- 服務(wù)端收到客戶端的回復(fù),利用已知的加解密方式進(jìn)行解密,同時(shí)利用Client random慰安、Server random和Premaster secret通過一定的算法生成HTTP鏈接數(shù)據(jù)傳輸?shù)膶?duì)稱加密key – session key腋寨。
此后的HTTP鏈接數(shù)據(jù)傳輸即通過對(duì)稱加密方式進(jìn)行加密傳輸。
HTTPS和HTTP的區(qū)別主要如下:
https協(xié)議需要到ca申請(qǐng)證書化焕,一般免費(fèi)證書較少萄窜,因而需要一定費(fèi)用。
http是超文本傳輸協(xié)議撒桨,信息是明文傳輸查刻,https則是具有安全性的ssl加密傳輸協(xié)議。
http和https使用的是完全不同的連接方式凤类,用的端口也不一樣穗泵,前者是80,后者是443谜疤。
http的連接很簡(jiǎn)單火欧,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸茎截、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全赶盔。
三企锌、HTTPS的工作原理
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取于未,所以很多銀行網(wǎng)站或電子郵箱等等安全級(jí)別較高的服務(wù)都會(huì)采用HTTPS協(xié)議
-
客戶端發(fā)起HTTPS請(qǐng)求
這個(gè)沒什么好說的撕攒,就是用戶在瀏覽器里輸入一個(gè)https網(wǎng)址,然后連接到server的443端口烘浦。
-
服務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書抖坪,可以自己制作,也可以向組織申請(qǐng)闷叉,區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過擦俐,才可以繼續(xù)訪問,而使用受信任的公司申請(qǐng)的證書則不會(huì)彈出提示頁面(startssl就是個(gè)不錯(cuò)的選擇握侧,有1年的免費(fèi)服務(wù))蚯瞧。
這套證書其實(shí)就是一對(duì)公鑰和私鑰,如果對(duì)公鑰和私鑰不太理解品擎,可以想象成一把鑰匙和一個(gè)鎖頭埋合,只是全世界只有你一個(gè)人有這把鑰匙,你可以把鎖頭給別人萄传,別人可以用這個(gè)鎖把重要的東西鎖起來甚颂,然后發(fā)給你,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西振诬。
-
傳送證書
這個(gè)證書其實(shí)就是公鑰蹭睡,只是包含了很多信息,如證書的頒發(fā)機(jī)構(gòu)贷揽,過期時(shí)間等等棠笑。
-
客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會(huì)驗(yàn)證公鑰是否有效禽绪,比如頒發(fā)機(jī)構(gòu)蓖救,過期時(shí)間等等,如果發(fā)現(xiàn)異常印屁,則會(huì)彈出一個(gè)警告框循捺,提示證書存在問題。
如果證書沒有問題雄人,那么就生成一個(gè)隨機(jī)值从橘,然后用證書對(duì)該隨機(jī)值進(jìn)行加密,就好像上面說的础钠,把隨機(jī)值用鎖頭鎖起來恰力,這樣除非有鑰匙,不然看不到被鎖住的內(nèi)容旗吁。
-
傳送加密信息
這部分傳送的是用證書加密后的隨機(jī)值踩萎,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶端和服務(wù)端的通信就可以通過這個(gè)隨機(jī)值來進(jìn)行加密解密了很钓。
-
服務(wù)段解密信息
服務(wù)端用私鑰解密后香府,得到了客戶端傳過來的隨機(jī)值(私鑰),然后把內(nèi)容通過該值進(jìn)行對(duì)稱加密码倦,所謂對(duì)稱加密就是企孩,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰袁稽,不然無法獲取內(nèi)容勿璃,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠彪悍运提,私鑰夠復(fù)雜蝗柔,數(shù)據(jù)就夠安全。
-
傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息民泵,可以在客戶端被還原癣丧。
-
客戶端解密信息
客戶端用之前生成的私鑰解密服務(wù)段傳過來的信息,于是獲取了解密后的內(nèi)容栈妆,整個(gè)過程第三方即使監(jiān)聽到了數(shù)據(jù)胁编,也束手無策
參考鏈接:
https://blog.csdn.net/c_kite/article/details/79826939
http://www.mahaixiang.cn/internet/1233.html
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
https://blog.csdn.net/zxk364961978/article/details/54809008