為什么存在https協議
http通信存在的問題
容易被監聽
http通信都是明文,數據在客戶端與服務器通信過程中,任何一點都可能被劫持。比如,發送了銀行卡號和密碼,hacker劫取到數據,就能看到卡號和密碼,這是很危險的
被偽裝
http通信時,無法保證通行雙方是合法的,通信方可能是偽裝的。比如你請求www.taobao.com,你怎么知道返回的數據就是來自淘寶,中間人可能返回數據偽裝成淘寶。
被篡改
hacker中間篡改數據后,接收方并不知道數據已經被更改
用htpps有什么好處
https很好的解決了http的三個缺點(被監聽、被篡改、被偽裝),https不是一種新的協議,它是http+SSL(TLS)的結合體,SSL是一種獨立協議,所以其它協議比如smtp等也可以跟ssl結合。https改變了通信方式,它由以前的http—–>tcp,改為http——>SSL—–>tcp;https采用了共享密鑰加密+公開密鑰加密的方式
防監聽
數據是加密的,所以監聽得到的數據是密文,hacker看不懂。
防偽裝
偽裝分為客戶端偽裝和服務器偽裝,通信雙方攜帶證書,證書相當于身份證,有證書就認為合法,沒有證書就認為非法,證書由第三方頒布,很難偽造
防篡改
https對數據做了摘要,篡改數據會被感知到。hacker即使從中改了數據也白搭。
https連接過程
https也是tcp/ip協議,首先也是需要三次握手,然后才是下面的過程
客戶端發送請求到服務器端
服務器端返回證書和公開密鑰,公開密鑰作為證書的一部分而存在
客戶端驗證證書和公開密鑰的有效性,如果有效,則生成共享密鑰并使用公開密鑰加密發送到服務器端
服務器端使用私有密鑰解密數據,并使用收到的共享密鑰加密數據,發送到客戶端
客戶端使用共享密鑰解密數據
SSL加密建立………
金融業客戶端認證,安裝證書
客戶端認證的通信的過程
客戶端需要認證的過程跟服務器端需要認證的過程基本相同,并且少了最開始的兩步。這種情況都是證書存儲在客戶端,并且應用場景比較少,一般金融才使用,比如支付寶、銀行客戶端都需要安裝證書。
后續問題
怎樣保證公開密鑰的有效性
你也許會想到,怎么保證客戶端收到的公開密鑰是合法的,不是偽造的,證書很好的完成了這個任務。證書由權威的第三方機構頒發,并且對公開密鑰做了簽名。
https的缺點
https保證了通信的安全,但帶來了加密解密消耗計算機cpu資源的問題 ,不過,有專門的https加解密硬件服務器
各大互聯網公司,百度、淘寶、支付寶、知乎都使用https協議,為什么?
支付寶涉及到金融,所以出于安全考慮采用https這個,可以理解,為什么百度、知乎等也采用這種方式?為了防止運營商劫持!http通信時,運營商在數據中插入各種廣告,用戶看到后,怒火發到互聯網公司,其實這些壞事都是運營商(移動、聯通、電信)干的,用了https,運營商就沒法插播廣告篡改數據了。