1. 程式人生 > >Https建立連線過程

Https建立連線過程

思考問題的順序

學技術時,總是會問什麼?這裡也不例外,https為什麼會存在,它有什麼優點,又有什麼缺點?為什麼網站有的用http,有的用https?如果不能很好的回答,就往下看吧。

http通訊存在的問題

容易被監聽
http通訊都是明文,資料在客戶端與伺服器通訊過程中,任何一點都可能被劫持。比如,傳送了銀行卡號和密碼,hacker劫取到資料,就能看到卡號和密碼,這是很危險的
被偽裝
http通訊時,無法保證通行雙方是合法的,通訊方可能是偽裝的。比如你請求www.taobao.com,你怎麼知道返回的資料就是來自淘寶,中間人可能返回資料偽裝成淘寶。
被篡改
hacker中間篡改資料後,接收方並不知道資料已經被更改
共享金鑰加密和公開金鑰加密

後續內容的需要,這裡插播一段共享金鑰加密和公開金鑰加密

共享金鑰加密
共享金鑰的加密金鑰和解密金鑰是相同的,所以又稱為對稱金鑰
公開金鑰加密
加密演算法是公開的,金鑰是保密的。公開金鑰分為私有金鑰和公有金鑰,公有金鑰是公開的,任何人(客戶端)都可以獲取,客戶端使用公有金鑰加密資料,服務端用私有金鑰解密資料。
異同
共享金鑰加密與公開金鑰加密相比,加解密處理速度快,但公開金鑰更適應網際網路下使用
http協議
http協議是無狀態的協議,必須有客戶端發出請求,服務端響應
SSL/TLS協議
是種獨立協議,由記錄協議和握手協議組成,記錄協議主要處理資料的加密(加密、MAC金鑰),握手協議主要是進行對等使用者的認證,證書審查,保證資料傳輸的完整性和保密性,其它協議比如smtp等也可以跟ssl結合

完整性:資料在傳輸過程中不被修改,保持原始完整性。
保密性:資料傳輸過程是加密過的,不會被監聽洩露。
SSL和TLS關係
並列關係-TLS的主要目標是使SSL更安全,並使協議的規範更精確和完善。提供更安全的MAC演算法、更嚴密的警報等

https解決的問題

https很好的解決了http的三個缺點(被監聽、被篡改、被偽裝),https不是一種新的協議,它是http+SSL(TLS)的結合體。https改變了通訊方式,它由以前的http—–>tcp,改為http——>SSL—–>tcp;https採用了共享金鑰加密+公開金鑰加密的方式

防監聽
資料是加密的,所以監聽得到的資料是密文,hacker看不懂。
防偽裝


偽裝分為客戶端偽裝和伺服器偽裝,通訊雙方攜帶證書,證書相當於身份證,有證書就認為合法,沒有證書就認為非法,證書由第三方頒佈,很難偽造
防篡改
https對資料做了摘要,篡改資料會被感知到。hacker即使從中改了資料也白搭。
防抓包
資料是加密的,抓包得到的資料包是加密後資料格式。
https連線過程

伺服器端需要認證的通訊過程

這裡寫圖片描述

當瀏覽器(客戶端)需要與某個安全站點建立連線時,先建立TCP連線(三次握手),然後再發生 SSL會話握手;

0、客戶端傳送請求到伺服器端,建立連線(三次握手)
1、客戶端傳送請求到伺服器端,建立連線(SSL/TLS握手)
2、伺服器端返回證書和公開金鑰,公開金鑰作為證書的一部分而存在
3、客戶端驗證證書和公開金鑰的有效性,如果有效,則生成共享金鑰並使用公開金鑰加密傳送到伺服器端
4、伺服器端使用私有金鑰解密資料,並使用收到的共享金鑰加密資料,傳送到客戶端
5、客戶端使用共享金鑰解密資料
6、SSL加密建立………