本文參考這邊文章服務器
下面是我理解的HTTPS工做原理:加密
1.首先客戶端想服務端發送請求,服務器會下發證書(公鑰,能夠把公鑰理解成一個鎖頭,能夠有不少把,用來鎖住你想保密的東西,只有一個私鑰(鑰匙)能打開它)給客戶端;操作系統
2.客戶端拿到證書後,用證書加密一個隨機數(之後和服務器通信就用這個隨機數防僞),傳給服務器(給數據上鎖發給服務器)。get
3.由於只有服務器有私鑰,因此只有服務器拿到剛剛客戶端加密的隨機數才能正確解密。服務器解密後拿到隨機數,就知道從此就使用這個隨機數做爲新的私鑰和客戶端通信。原理
4.服務器用新的私鑰加密數據返回給客戶端告訴它,我知道了。隨機數
5.客戶端收到消息後,用剛剛的隨機數對信息解密,肯定服務器已經拿到私鑰了。請求
客戶端:您好,請給我公鑰。數據
服務器:好的,這是個人證書(該公司到權威機構認證後,操做系統中會加入該公司的公鑰到操做系統出廠設置中),加密後的公鑰(這個加密公鑰,使用操做系統中保存的權威機構的公鑰來解密)客戶端
客戶端:好的,這是我加密後的私鑰(使用公鑰加密的)服務端
服務器,好的,我知道你的私鑰了,之後就用它來通信