超過3分鐘的話麻煩用白金之星hold一下
首先,先了解 Symmetric Encryption(對稱式加密)與 Asymmetric Encryption (非對稱式加密)這兩種東西。對稱式加密很簡單,就是用同一個key來加密/解密,就像你用同一把鑰匙打開/鎖上家裡的大門一樣。而非對稱式加密則是有兩個key,一個是Public key(公鑰,可以公開以不安全的方式流通)、另一個是Private key(私鑰,不能以不安全的方式公開流通)。這兩個key是一對的,加密的暗文只能被對方解開。相對於對稱式,非對稱式加密的消耗時間比較多。
因為你用來做對稱式加密的key在第一次傳送過程中會被看到,所以需要一個安全的方式傳輸你的Key。
對,這叫中間人攻擊,所以我們還需要一個機制來防範這件事,CA( Certificate Authority, 數位憑證認證機構)就是為此而誕生的。簡單來說,CA會簽發一張憑證讓你佈署在server上,內容是你的site的資訊,以及一個簽章;這個簽章是由你的site資訊經過hash後再由CA的私鑰加密而成的。client端在驗證憑證時,只要拿該憑證內的公鑰拆開得到hash,再拿憑證上的資訊hash看是否相同,即可看出憑證是否被竄改過。
client端發起Https request Server端返回CA發的憑證 Client端收到憑證,並驗證憑證是否可信,如果可信(或是使用者選擇相信)則隨機產生一段對稱式加密用的key(稱之為Key S好了),並且用憑證內的公鑰加密Key S,送給Server Server收到加密過的Key S,用自己的私鑰解密,並且回給Client一個ready的訊息 Client開始和Server用Key S做對稱式加密通訊
為了在未來的某天迅速有效的喚醒我的金魚腦。・゚・(つд`゚)・゚・