https,http和ssl這三者是什么關系呢?
http是超文本傳輸協議,瀏覽器利用這一協議就可以訪問各種網站了。
ssl指Secure Sockets Layer 安全套接層,是一種保證網絡數據傳輸安全和完整的安全協議。
https是在http規則的基礎上又加了一層加密協議的超文本傳輸協議,s 指代 Secure Socket Layer 安全套接字層,
http傳數據大致是這樣的: http協議封裝好的數據包 -> tcp/ip -> 服務器 , 缺點:數據包中途可能被竊取或者被篡改
https大致流程是這樣 : http協議封裝好的數據包 + ssl加密 -> tcp/ip -> 服務器 缺點:雖然安全,但是開銷變大了,傳輸速度也變慢了。
如果把http傳輸比喻成一個數據管道的話,ssl就是這個管道的特殊防護層,這個ssl不僅可以保護http傳輸,也可以用在其他數據加密傳輸.
https又是怎么保證數據的加密傳輸的呢?
首先再正式發送數據前,瀏覽器如果發現是https傳輸要進行必要的准備工作才開始發送,大致分為以下幾步。
1, 瀏覽器把協議版本號,支持的加密算法 生成的隨機數A發送給服務器。
2, 服務器接到客戶端發送過來的加密算法后,查看自身支持的加密算法,確定雙方后邊使用哪種加密算法,然后把該算法和數字證書以及生成的隨機數B發給客戶端。
3, 客戶端接到服務器發送過來的證數后,得到證書里的非對稱加密的公鑰D,然后又生成一個隨機數C,把C和D加密后得到的一個字符串E發給服務器。
4, 服務器接到這個字符串E后,用自身的私鑰解密得到C,這樣服務器就集齊了 A,B,C,然后利用ABC生成對話加密密鑰 , 因為客戶端也得到了A,B,C 這樣雙方都能進行加密解密了,至於加密解密的算法就是前面雙方交換加密方法表時約定的加密算法。
所以可以看出ABC中,只有C是極難被別人得到的,這樣保證了安全性,同時這個過程前面用到了非對稱加密,一旦加密密鑰確定,后面其實用的都是對稱加密了。
