一、基本概念
1、HTTP:超文本傳輸協(xié)議(Hyper Text Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。是一個(gè)客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。
2、HTTPS:安全套接字層超文本傳輸協(xié)議(Hyper Text Transfer Protocol over Secure Socket Layer)。以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版本,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。
HTTPS和SSL支持使用X.509數(shù)字認(rèn)證,如果需要的話用戶可以確認(rèn)發(fā)送者是誰,也就是說它的主要作用可以分為兩種:
(1)建立一個(gè)信息安全的通道,來保證數(shù)據(jù)傳輸?shù)陌踩?/div>
?。?)確認(rèn)網(wǎng)站的真實(shí)性。
二、具體區(qū)別
HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全,為了保證這些隱私數(shù)據(jù)加密傳輸,網(wǎng)景公司設(shè)計(jì)了SSL(Secure Sockets Layer)協(xié)議用于對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密,從而誕生了HTTPS。具體的區(qū)別如下:
1、HTTPS更安全:HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比HTTP協(xié)議的信息明文傳輸安全;
2、HTTPS需要申請證書:HTTPS協(xié)議需要到CA申請證書,一般免費(fèi)證書很少,需要交費(fèi),費(fèi)用大概與.com域名差不多,每年需要大約幾十元的費(fèi)用。而常見的HTTP協(xié)議則沒有這一項(xiàng);
3、端口不同:HTTP使用的是大家最常見的80端口,而HTTPS連接使用的是443端口;
4、安全性不同:HTTP的連接很簡單,是無狀態(tài)的。而HTTPS協(xié)議是HTTP協(xié)議+SSL構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比HTTP協(xié)議安全;
三、HTTPS具體工作
HTTPS連接時(shí),服務(wù)器要求有公鑰和簽名的證書。使用HTTPS連接,服務(wù)器響應(yīng)初始連接,并提供它所支持的加密方法,作為回應(yīng),客戶端選擇一個(gè)連接方法,并且客戶端和服務(wù)器端交換證書驗(yàn)證彼此身份,完成后在確保使用相同密鑰的情況下傳輸加密信息,然后關(guān)閉連接,為了提供HTTPS連接支持,服務(wù)器必須有一個(gè)公鑰證書,該證書包含經(jīng)過證書機(jī)構(gòu)認(rèn)證的密鑰信息,大部分證書都是通過第三方機(jī)構(gòu)授權(quán)的以保證證書是安全的。
HTTPS跟HTTP一樣,只不過增加了SSL。
1、HTTP包含如下動(dòng)作:
?。?)瀏覽器打開一個(gè)TCP連接
?。?)瀏覽器發(fā)送HTTP請求到服務(wù)器端
?。?)服務(wù)器發(fā)送HTTP回應(yīng)信息到瀏覽器
?。?)TCP連接關(guān)閉
2、SSL包含如下動(dòng)作:
?。?)驗(yàn)證服務(wù)器端;
?。?)允許客戶端和服務(wù)器端選擇加密算法和密碼,確保雙方都支持
?。?)驗(yàn)證客戶端(可選)
(4)使用公鑰加密技術(shù)來生成共享加密數(shù)據(jù)
?。?)創(chuàng)建一個(gè)加密的SSL連接
?。?)基于該SSL連接傳遞HTTP請求
四、HTTPS的工作原理
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取,所以很多銀行網(wǎng)站或電子郵箱等安全級別較高的服務(wù)都會(huì)采用HTTPS協(xié)議。
1、客戶端發(fā)起HTTPS請求
就是用戶在瀏覽器里輸入一個(gè)HTTPS網(wǎng)址,然后連接到服務(wù)器的443端口。
2、服務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書,可以自己制作,也可以向組織申請,區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過,才可以繼續(xù)訪問,而使用受信任的公司申請的證書則不會(huì)彈出提示頁面。
這套證書其實(shí)就是一對公鑰和私鑰,如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個(gè)鎖頭,只是全世界只有你一個(gè)人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個(gè)鎖把重要的東西鎖起來,然后發(fā)給你,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
3、傳送證書
這個(gè)證書其實(shí)就是公鑰,只是包含了很多信息,如證書的頒發(fā)機(jī)構(gòu),過期時(shí)間等等。
4、客戶端解析證書
這部分工作是由客戶端的TLS來完成的,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過期時(shí)間等等,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書存在問題。
如果證書沒有問題,那么就生成一個(gè)隨機(jī)值,然后用證書對該隨機(jī)值進(jìn)行加密,就好像上面說的,把隨機(jī)值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內(nèi)容。
5、傳送加密信息
這部分傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶端和服務(wù)端的通信就可以通過這個(gè)隨機(jī)值來進(jìn)行加密解密了。
6、服務(wù)端解密信息
服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(新的私鑰),然后把內(nèi)容通過該值進(jìn)行對稱加密,所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠彪悍,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全。
7、傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息,可以在客戶端被還原。
8、客戶端解密信息
客戶端用之前生成的私鑰(隨機(jī)值)解密服務(wù)段傳過來的信息,于是獲取了解密后的內(nèi)容,整個(gè)過程第三方即使監(jiān)聽到了數(shù)據(jù),也束手無策。