http傳輸以下:算法
此時信息是明文傳輸,若是信息被人截獲,則能看到裏面的內容,極不安全 segmentfault
那就須要對內容加密,過程以下:瀏覽器
但此方案仍會存在安全隱患,在第三步和第四步之間,若是被一箇中間人獲取到它的公鑰,瀏覽器使用中間人的公鑰加密對稱密鑰,發送給服務器,中間人再次截獲數據,獲取其中的對稱密鑰。瀏覽器和服務器在雙方數據都不知情的狀況下,數據內容被窺探。 安全
問題的重點在於,第三步瀏覽器沒法獲得公鑰的來源的合法性,這就須要數字證書了。這就是https的解決方案
服務端單單發送公鑰,而是發送包含公鑰的數字證書。
數字證書由第三方機構頒發,瀏覽器已經維護了全部知名的第三方機構。 服務器
瀏覽器如何肯定公鑰的合法性?網絡
公鑰和私鑰的相關知識
公鑰和私鑰是一對密鑰對,它們能夠互解密。使用公鑰加密,私鑰解密。能有效保證數據的安全性。可是若是使用私鑰加密,公鑰解密呢,則能夠肯定來源的合法性。由於只有知道私鑰才能加密,若是咱們能使用公鑰解密獲得正常內容(內容是否正確就是比較hash1和hash2),那麼對方必定是擁有私鑰的主機,而私鑰是由第三方頒發給服務器的,這就是數字簽名。加密
OSI七層
物理層->數據鏈路層->網絡層->傳輸層->會話層->表示層->應用層
https的ssl位於傳輸層和應用層之間spa