針對安全性要求比較高的 app,可采取客戶端預埋證書的方式鎖死證書,只有當客戶端證書和服務端的證書完全一致的情況下才允許通信,如一些銀行類的app,但這種方式面臨一個問題,證書過期的問題,因證書有一定的有效期,當預埋證書過期了,只有通過強制更新或者要求用戶下載證書來解決。
HTTPS連接過程及中間人攻擊原理是什么?接下來請看小編的解析:
一、HTTPS連接過程及中間人攻擊原理
客戶端向服務端發(fā)送https請求;
2.生成公鑰和私鑰
服務端收到請求之后,生成公鑰和私鑰。公鑰相當于是鎖,私鑰相當于是鑰匙,只有私鑰才能夠打開公鑰鎖住的內容;
3.返回公鑰
服務端將公鑰(證書)返回給客戶端,公鑰里面包含有很多信息,比如證書的頒發(fā)機構、過期時間等等;
4.客戶端驗證公鑰
客戶端收到公鑰之后,首先會驗證其是否有效,如頒發(fā)機構或者過期時間等,如果發(fā)現(xiàn)有問題就會拋出異常,提示證書存在問題。如果沒有問題,那么就生成一個隨機值,作為客戶端的密鑰,然后用服務端的公鑰加密;
5.發(fā)送客戶端密鑰
客戶端用服務端的公鑰加密密鑰,然后發(fā)送給服務端。
6.服務端收取密鑰,對稱加密內容
服務端收到經(jīng)過加密的密鑰,然后用私鑰將其解密,得到客戶端的密鑰,然后服務端把要傳輸?shù)膬热莺涂蛻舳说拿荑€進行對稱加密,這樣除非知道密鑰,否則無法知道傳輸?shù)膬热荨?/div>
7.加密傳輸
服務端將經(jīng)過加密的內容傳輸給客戶端。
8.獲取加密內容,解密
客戶端獲取加密內容后,用之前生成的密鑰對其進行解密,獲取到內容。
中間人劫持攻擊
https也不是絕對安全的,如下圖所示為中間人劫持攻擊,中間人可以獲取到客戶端與
服務器之間所有的通信內容。
HTTPS連接過程以及中間人攻擊劫持
中間人截取客戶端發(fā)送給服務器的請求,然后偽裝成客戶端與服務器進行通信;將服務器返回給客戶端的內容發(fā)送給客戶端,偽裝成服務器與客戶端進行通信。
通過這樣的手段,便可以獲取客戶端和服務器之間通信的所有內容。
使用中間人攻擊手段,必須要讓客戶端信任中間人的證書,如果客戶端不信任,則這種攻擊手段也無法發(fā)揮作用。
二、中間人攻擊的預防
造成中間人劫持的原因是 沒有對服務端證書及
域名做校驗或者校驗不完整,為了方便,直接采用開源框架默認的校驗方式進行https請求
預防方法:
預防方式有兩種
1 、針對安全性要求比較高的
app,可采取客戶端預埋證書的方式鎖死證書,只有當客戶端證書和服務端的證書完全一致的情況下才允許通信,如一些銀行類的app,但這種方式面臨一個問題,證書過期的問題,因證書有一定的有效期,當預埋證書過期了,只有通過強制更新或者要求用戶下載證書來解決。
以上就是HTTPS連接過程。