https即http+SSL,是基於http的一種加密傳輸方式,要了解https,首先就要了解SSL。算法
SSL是一種加密方式,主要分爲三個部分:加密、數字簽名、認證。瀏覽器
下面咱們主要從這三個部分依次提及:安全
SSL加密是把對稱加密和非對稱加密混合起來加密的。服務器
加密和解密雙方使用同一個密鑰的方式叫作對稱加密。這種方式最大問題是怎樣將密鑰傳給對方,所以要保證密鑰傳輸過程當中的安全性,而普通的http請求並不具有安全性,故SSL不單獨使用對稱加密。網絡
非對稱加密解決了數據在網絡上請求的安全問題,該方式裏有兩種密鑰:公有密鑰和私有密鑰。性能
私有密鑰用於解密,不能隨意發佈,公有密鑰用於加密,能夠隨意發佈,發送密文的一方使用公有密鑰對數據進行加密,對方收到數據後用本身的私有密鑰解密,私鑰不能在網絡上發送,所以沒必要擔憂安全性問題。加密
但以上方式也有侷限性,好比在典型的http請求中,雙方都要對數據進行加密,而私鑰只在一方,另外一方沒有私鑰不能對數據進行解密,而若是雙方都使用非對稱加密,則傳輸效率會很低。spa
那麼如何才能使用在保證安全性和效率的狀況下,客戶端和服務端都能進行加密和解密呢?這正是SSL的加密原理,前面我已經說過SSL是經過非對稱加密和對稱加密實現的,你能夠設想一下如何解決上述問題。圖片
下面咱們簡單說說https中SSL的步驟,首先咱們定義對稱加密的密鑰爲對稱密鑰,非對稱加密的密鑰爲公有密鑰和私有密鑰:it
客戶端向服務器發起SSL握手,此時客戶端向服務器發送的報文信息爲:
服務端收到客戶端的報文後,再向客戶端發送報文信息,此時報文信息爲:
SSL使用以上幾步就解決了http請求的安全問題,看起來很簡單,可是實際的SSL仍有許多步驟來完善上面幾步。
以上加密步驟的四、5步,SSL用了數字簽名機制保證傳輸「對稱密鑰」的一致性,詳細爲:
從上面步驟能夠看出數字簽名是創建在非對稱加密基礎上的,實際上在SSL的許多過程當中,數字簽名也能夠創建在對稱加密的基礎上。
在以上SSL加密過程當中的第2步,咱們能夠看到服務端向客戶端傳的是數字證書而不是公有密鑰,實際上若是單獨傳輸公有密鑰,客戶端不能肯定該公有密鑰就是服務器傳來的公鑰,所以數字證書機制就是來單獨解決這個問題的。
數字證書,有點像生活中的身份證、護照等,是由一個官方的證書頒發機構(又名CA)簽發的一組數據。這種證書很難僞造,用於使用者的身份證實。
客戶端會對數字證書進行一段認證流程來取出數字證書裏的公有密鑰:
咱們能夠用一張圖來展現整個SSL加密的過程: