在面試的時(shí)候面試官經(jīng)常會(huì)問我們是否了解http與https的區(qū)別?下面我們就來討論一下
1.理解http與https的概念
(1)HTTP:超文本傳輸協(xié)議 (HTTP-Hypertext transfer protocol),是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。
? ? ?HTTP的會(huì)出現(xiàn)的問題:http協(xié)議屬于明文傳輸協(xié)議,交互過程以及數(shù)據(jù)傳輸都沒有進(jìn)行加密,通信雙方也沒有進(jìn)行任何認(rèn)證,通信過程非常容易遭遇劫持、監(jiān)聽、篡改,嚴(yán)重情況下,會(huì)造成惡意的流量劫持等問題,甚至造成個(gè)人隱私泄露(比如銀行卡卡號(hào)和密碼泄露)等嚴(yán)重的安全問題。
(2)HTTPS:是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。現(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊,例如交易支付方面。
? ? HTTPS協(xié)議可以分為兩種:一是通過建立一個(gè)信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩欢峭ㄟ^確認(rèn)網(wǎng)站的真實(shí)性。
HTTPS在HTTP的基礎(chǔ)上加入了SSL/TLS協(xié)議,依靠SSL證書來驗(yàn)證服務(wù)器的身份,并為客戶端和服務(wù)器端之間建立“SSL加密通道”,確保用戶數(shù)據(jù)在傳輸過程中處于加密狀態(tài),同時(shí)防止服務(wù)器被釣魚網(wǎng)站假冒,而HTTP協(xié)議無法加密數(shù)據(jù),所有通信數(shù)據(jù)都在網(wǎng)絡(luò)中明文“裸奔”。通過網(wǎng)絡(luò)的一些技術(shù)手段,就可還原HTTP報(bào)文內(nèi)容。
2.簡(jiǎn)要了解HTTP和HTTPS的區(qū)別?
(1)HTTP 是超文本傳輸協(xié)議,屬于明文傳輸協(xié)議,HTTPS?則是具有安全性的基于ssl加密的傳輸協(xié)議
(2)HTTP?和 HTTPS?使用的是連接方式不同,而且用的端口也不一樣,前者是80,后者是443。
(3)HTTP 是簡(jiǎn)單的無狀態(tài)的連接。HTTPS 協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議 要比 HTTP 協(xié)議安全
(4)HTTPS 內(nèi)容經(jīng)過對(duì)稱加密,每個(gè)連接生成一個(gè)唯一的加密密鑰(對(duì)稱秘鑰:對(duì)稱密鑰加密又叫專用密鑰加密,即發(fā)送和接收數(shù)據(jù)的雙方必使用相同的密鑰對(duì)明文進(jìn)行加密和解密運(yùn)算。)
(5)HTTPS 內(nèi)容傳輸經(jīng)過完整性校驗(yàn)
3.HTTPS是如何保證數(shù)據(jù)的安全?
(1)客戶端向服務(wù)器端發(fā)起SSL連接請(qǐng)求;(在此過程中依然存在數(shù)據(jù)被中間方盜取的可能,下面將會(huì)說明如何保證此過程的安全)
(2) 服務(wù)器把公鑰發(fā)送給客戶端,并且服務(wù)器端保存著唯一的私鑰
(3)客戶端用公鑰對(duì)雙方通信的對(duì)稱秘鑰進(jìn)行加密,并發(fā)送給服務(wù)器端
(4)服務(wù)器利用自己唯一的私鑰對(duì)客戶端發(fā)來的對(duì)稱秘鑰進(jìn)行解密,在此過程中,中間方無法對(duì)其解密(即使是客戶端也無法解密,因?yàn)橹挥蟹?wù)器端擁有唯一的私鑰),這樣保證了對(duì)稱秘鑰在收發(fā)過程中的安全,此時(shí),服務(wù)器端和客戶端擁有了一套完全相同的對(duì)稱秘鑰。
(5)進(jìn)行數(shù)據(jù)傳輸,服務(wù)器和客戶端雙方用公有的相同的對(duì)稱秘鑰對(duì)數(shù)據(jù)進(jìn)行加密解密,可以保證在數(shù)據(jù)收發(fā)過程中的安全,即是第三方獲得數(shù)據(jù)包,也無法對(duì)其進(jìn)行加密,解密和篡改。