(一)HTTP和HITTPS的基本概念
HTTP:超文本傳輸協(xié)議(HTTP寡壮,HyperText Transfer Protocol)是互聯(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:(全稱(chēng):Hyper Text Transfer Protocol over Secure Socket Layer)您宪,是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版奠涌。即HTTP下加入SSL層宪巨,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL溜畅。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系)捏卓,句法類(lèi)同http:體系。用于安全的HTTP數(shù)據(jù)傳輸慈格。https:URL表明它使用了HTTP怠晴,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司(Netscape)進(jìn)行浴捆,并內(nèi)置于其瀏覽器Netscape Navigator中蒜田,提供了身份驗(yàn)證與加密通訊方法。現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊选泻,例如交易支付方面冲粤。
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來(lái)保證數(shù)據(jù)傳輸?shù)陌踩趁校涣硪环N就是確認(rèn)網(wǎng)站的真實(shí)性梯捕。
(二)HTTP和HTTPS的區(qū)別
HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議
HTTPS=HTTP+SSL
HTTPS和HTTP的區(qū)別主要如下:
1窝撵、https協(xié)議需要到ca申請(qǐng)證書(shū)傀顾,一般免費(fèi)證書(shū)較少,因而需要一定費(fèi)用碌奉。
2短曾、http是超文本傳輸協(xié)議,信息是明文傳輸道批,https則是具有安全性的ssl加密傳輸協(xié)議错英。
3入撒、http和https使用的是完全不同的連接方式隆豹,用的端口也不一樣,前者是80茅逮,后者是443璃赡。
4判哥、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的碉考;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸塌计、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全侯谁。
(三)HTTP工作原理
客戶端與服務(wù)器建立連接后锌仅,發(fā)送一個(gè)請(qǐng)求給服務(wù)器,請(qǐng)求格式為:統(tǒng)一資源標(biāo)識(shí)符墙贱、協(xié)議版本號(hào)热芹。服務(wù)器收到請(qǐng)求的信息(包括請(qǐng)求行,請(qǐng)求頭惨撇,請(qǐng)求體)伊脓。服務(wù)器接收到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息魁衙,格式為一個(gè)狀態(tài)行(包括響應(yīng)行报腔,響應(yīng)頭,響應(yīng)體)剖淀。
在internet上纯蛾,http通訊通常發(fā)生在TCP/IP連接之上。缺省端口是TCP的80端口祷蝌。
基于HTTP協(xié)議的客戶/服務(wù)器模式的信息交換過(guò)程茅撞,分為四個(gè)過(guò)程:建立連接、發(fā)送請(qǐng)求信息巨朦、發(fā)送響應(yīng)信息米丘、關(guān)閉連接。
服務(wù)器可能同時(shí)接受多個(gè)請(qǐng)求糊啡,這時(shí)就會(huì)產(chǎn)生多個(gè)sessoin拄查,每個(gè)session分別處理各自的請(qǐng)求。
HTTP的工作過(guò)程
一次HTTP操作稱(chēng)為一個(gè)事務(wù)棚蓄,其工作整個(gè)過(guò)程如下:
1)堕扶、地址解析
如用客戶端瀏覽器請(qǐng)求這個(gè)頁(yè)面:http://localhost.com:8080/index.htm
從中分解出協(xié)議名、主機(jī)名梭依、端口稍算、對(duì)象路徑等部分,對(duì)于我們的這個(gè)地址役拴,解析得到的結(jié)果如下:
協(xié)議名:http
主機(jī)名:localhost.com
端口:8080
對(duì)象路徑:/index.html
在這一步糊探,需要域名系統(tǒng)DNS解析域名localhost.com,得主機(jī)的IP地址。
2)、封裝HTTP請(qǐng)求數(shù)據(jù)包
把以上部分結(jié)合本機(jī)自己的信息科平,封裝成一個(gè)HTTP請(qǐng)求數(shù)據(jù)包
3)封裝成TCP包褥紫,建立TCP連接(TCP的三次握手)
在HTTP工作開(kāi)始之前,客戶機(jī)(Web瀏覽器)首先要通過(guò)網(wǎng)絡(luò)與服務(wù)器建立連接瞪慧,該連接是通過(guò)TCP來(lái)完成的髓考,該協(xié)議與IP協(xié)議共同構(gòu)建Internet,即著名的TCP/IP協(xié)議族弃酌,因此Internet又被稱(chēng)作是TCP/IP網(wǎng)絡(luò)氨菇。HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則妓湘,只有低層協(xié)議建立之后才能门驾,才能進(jìn)行更層協(xié)議的連接,因此多柑,首先要建立TCP連接奶是,一般TCP連接的端口號(hào)是80。這里是8080端口
4)客戶機(jī)發(fā)送請(qǐng)求命令
建立連接后竣灌,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器聂沙,請(qǐng)求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)、協(xié)議版本號(hào)初嘹,后邊是MIME信息包括請(qǐng)求修飾符及汉、客戶機(jī)信息和可內(nèi)容。
5)服務(wù)器響應(yīng)
服務(wù)器接到請(qǐng)求后屯烦,給予相應(yīng)的響應(yīng)信息坷随,其格式為一個(gè)狀態(tài)行,包括信息的協(xié)議版本號(hào)驻龟、一個(gè)成功或錯(cuò)誤的代碼温眉,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容翁狐。
實(shí)體消息是服務(wù)器向?yàn)g覽器發(fā)送頭信息后类溢,它會(huì)發(fā)送一個(gè)空白行來(lái)表示頭信息的發(fā)送到此為結(jié)束,接著露懒,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)
6)服務(wù)器關(guān)閉TCP連接
一般情況下闯冷,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接懈词,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開(kāi)狀態(tài)蛇耀,于是,瀏覽器可以繼續(xù)通過(guò)相同的連接發(fā)送請(qǐng)求坎弯。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間纺涤,還節(jié)約了網(wǎng)絡(luò)帶寬躁倒。
服務(wù)器將響應(yīng)信息傳給客戶端,響應(yīng)體中的內(nèi)容可能是一個(gè)html頁(yè)面洒琢,也可能是一張圖片,通過(guò)輸入流將其讀出褐桌,并寫(xiě)回到顯示器上衰抑。
(四)HTTPS的工作原理
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取荧嵌,所以很多銀行網(wǎng)站或電子郵箱等等安全級(jí)別較高的服務(wù)都會(huì)采用HTTPS協(xié)議呛踊。
1、客戶端發(fā)起HTTPS請(qǐng)求
用戶在瀏覽器里輸入一個(gè)https網(wǎng)址啦撮,然后連接到server的443端口谭网。
2、服務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書(shū)赃春,可以自己制作愉择,也可以向組織申請(qǐng),區(qū)別就是自己頒發(fā)的證書(shū)需要客戶端驗(yàn)證通過(guò)织中,才可以繼續(xù)訪問(wèn)锥涕,而使用受信任的公司申請(qǐng)的證書(shū)則不會(huì)彈出提示頁(yè)面(startssl就是個(gè)不錯(cuò)的選擇,有1年的免費(fèi)服務(wù))狭吼。
這套證書(shū)其實(shí)就是一對(duì)公鑰和私鑰层坠,如果對(duì)公鑰和私鑰不太理解,可以想象成一把鑰匙和一個(gè)鎖頭刁笙,只是全世界只有你一個(gè)人有這把鑰匙破花,你可以把鎖頭給別人,別人可以用這個(gè)鎖把重要的東西鎖起來(lái)疲吸,然后發(fā)給你座每,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來(lái)的東西摘悴。
3尺栖、傳送證書(shū)
這個(gè)證書(shū)其實(shí)就是公鑰,只是包含了很多信息烦租,如證書(shū)的頒發(fā)機(jī)構(gòu)延赌,過(guò)期時(shí)間等等。
4叉橱、客戶端解析證書(shū)
這部分工作是有客戶端的TLS來(lái)完成的挫以,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu)窃祝,過(guò)期時(shí)間等等掐松,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書(shū)存在問(wèn)題大磺。
如果證書(shū)沒(méi)有問(wèn)題抡句,那么就生成一個(gè)隨機(jī)值,然后用證書(shū)對(duì)該隨機(jī)值進(jìn)行加密杠愧,就好像上面說(shuō)的待榔,把隨機(jī)值用鎖頭鎖起來(lái),這樣除非有鑰匙流济,不然看不到被鎖住的內(nèi)容锐锣。
5、傳送加密信息
這部分傳送的是用證書(shū)加密后的隨機(jī)值绳瘟,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值雕憔,以后客戶端和服務(wù)端的通信就可以通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密了。
6糖声、服務(wù)段解密信息
服務(wù)端用私鑰解密后斤彼,得到了客戶端傳過(guò)來(lái)的隨機(jī)值(私鑰),然后把內(nèi)容通過(guò)該值進(jìn)行對(duì)稱(chēng)加密蘸泻,所謂對(duì)稱(chēng)加密就是畅卓,將信息和私鑰通過(guò)某種算法混合在一起,這樣除非知道私鑰蟋恬,不然無(wú)法獲取內(nèi)容翁潘,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠彪悍歼争,私鑰夠復(fù)雜拜马,數(shù)據(jù)就夠安全。
7沐绒、傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息俩莽,可以在客戶端被還原。
8乔遮、客戶端解密信息
客戶端用之前生成的私鑰解密服務(wù)段傳過(guò)來(lái)的信息扮超,于是獲取了解密后的內(nèi)容,整個(gè)過(guò)程第三方即使監(jiān)聽(tīng)到了數(shù)據(jù)蹋肮,也束手無(wú)策出刷。
(五 )HTTPS的優(yōu)點(diǎn)
正是由于HTTPS非常的安全,攻擊者無(wú)法從中找到下手的地方坯辩,從站長(zhǎng)的角度來(lái)說(shuō)馁龟,HTTPS的優(yōu)點(diǎn)有以下2點(diǎn):
1、SEO方面
谷歌曾在2014年8月份調(diào)整搜索引擎算法漆魔,并稱(chēng)“比起同等HTTP網(wǎng)站坷檩,采用HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名將會(huì)更高”却音。
2、安全性
盡管HTTPS并非絕對(duì)安全矢炼,掌握根證書(shū)的機(jī)構(gòu)系瓢、掌握加密算法的組織同樣可以進(jìn)行中間人形式的攻擊,但HTTPS仍是現(xiàn)行架構(gòu)下最安全的解決方案句灌,主要有以下幾個(gè)好處:
(1)夷陋、使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器涯塔;
(2)、HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸清蚀、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議匕荸,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過(guò)程中不被竊取枷邪、改變榛搔,確保數(shù)據(jù)的完整性。
(3)东揣、HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案践惑,雖然不是絕對(duì)安全,但它大幅增加了中間人攻擊的成本嘶卧。
(六)HTTPS的缺點(diǎn)
雖然說(shuō)HTTPS有很大的優(yōu)勢(shì)尔觉,但其相對(duì)來(lái)說(shuō),還是有些不足之處的芥吟,具體來(lái)說(shuō)侦铜,有以下2點(diǎn):
1、SEO方面
據(jù)ACM CoNEXT數(shù)據(jù)顯示钟鸵,使用HTTPS協(xié)議會(huì)使頁(yè)面的加載時(shí)間延長(zhǎng)近50%钉稍,增加10%到20%的耗電,此外棺耍,HTTPS協(xié)議還會(huì)影響緩存贡未,增加數(shù)據(jù)開(kāi)銷(xiāo)和功耗,甚至已有安全措施也會(huì)受到影響也會(huì)因此而受到影響蒙袍。
而且HTTPS協(xié)議的加密范圍也比較有限俊卤,在黑客攻擊、拒絕服務(wù)攻擊害幅、服務(wù)器劫持等方面幾乎起不到什么作用瘾蛋。
最關(guān)鍵的,SSL證書(shū)的信用鏈體系并不安全矫限,特別是在某些國(guó)家可以控制CA根證書(shū)的情況下哺哼,中間人攻擊一樣可行佩抹。
2、經(jīng)濟(jì)方面
(1)取董、SSL證書(shū)需要錢(qián)棍苹,功能越強(qiáng)大的證書(shū)費(fèi)用越高,個(gè)人網(wǎng)站茵汰、小網(wǎng)站沒(méi)有必要一般不會(huì)用枢里。
(2)、SSL證書(shū)通常需要綁定IP蹂午,不能在同一IP上綁定多個(gè)域名栏豺,IPv4資源不可能支撐這個(gè)消耗(SSL有擴(kuò)展可以部分解決這個(gè)問(wèn)題,但是比較麻煩豆胸,而且要求瀏覽器奥洼、操作系統(tǒng)支持,Windows XP就不支持這個(gè)擴(kuò)展晚胡,考慮到XP的裝機(jī)量灵奖,這個(gè)特性幾乎沒(méi)用)。
(3)估盘、HTTPS連接緩存不如HTTP高效瓷患,大流量網(wǎng)站如非必要也不會(huì)采用,流量成本太高遣妥。
(4)擅编、HTTPS連接服務(wù)器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本箫踩,如果全部采用HTTPS沙咏,基于大部分計(jì)算資源閑置的假設(shè)的VPS的平均成本會(huì)上去。
(5)班套、HTTPS協(xié)議握手階段比較費(fèi)時(shí)肢藐,對(duì)網(wǎng)站的相應(yīng)速度有負(fù)面影響,如非必要吱韭,沒(méi)有理由犧牲用戶體驗(yàn)吆豹。