HTTP + 加密 + 認證 + 完整性保護 = HTTPS
實現方式為:
HTTP + SSL協議 = HTTPS
SSL協議的工作原理:
需要一個可信賴的第三方,也就是數字證書認證機構,通過數字證書認證機構頒發的證書,實現客戶端與服務端的加密及認證。
所以通俗講現在有三個角色:客戶端,服務端,認證機構。
tips:簡單說一下公鑰和私鑰,就是A和B兩個人都有各自公鑰和私鑰,私鑰自己保存,公鑰可以交給對方。這樣A向B發文件時,用B的公鑰加密,B收到后可以用自己的私鑰解密,別人拿到B公鑰加密的文件是沒辦法打開的,這樣限定了接收方必須是B。反之,如果有一天A成為了一個內容的供應商,為了保證某條信息是自己發出的,而不是別人仿造的,則需要通過A自己的私鑰加密,這樣普通用戶用A的公鑰解密時,能成功解密就說明這條信息確實來源于A,這樣就確定了消息的發送方。
1.服務端把自己的公開密鑰交給認證機構。
2.機構用自己的私鑰對這份服務端的公鑰加密,生成一個公鑰證書。
3.服務端把證書部署到服務器上
4.客戶端訪問時會下載到這個證書,并用瀏覽器內置的證書認證機構的公鑰去解密,獲取到服務器的公鑰。這一步是關鍵,確定了目標網站確實是經過數字認證機構認證的網站(因為機構的私鑰加密后可以被機構的公鑰解密),同時還拿到了該網站的公鑰。
5.客戶端再通過服務端的公鑰加密內容,確保了除目標網站之外,被其他人劫持也無法解密,然后向服務端發送加密后的HTTP報文,并附加名為MAC(Message Authentication Code)的報文摘要,MAC能夠查知報文是否遭到篡改,確保報文的完整性。
6.服務端用私鑰解密報文,做出相應處理,并加密返回。
如此,SSL協議就實現了加密 + 認證 + 完整性保護的功能,升級為HTTPS。