https(全稱:hypertext transfer protocol over secure socket layer),其實https並不是乙個新鮮協議,google很早就開始啟用了,初衷是為了保證資料安全。近些年,google、baidu、facebook等這樣的網際網路巨頭,不謀而合地開始大力推行https,國內外的大型網際網路公司很多也都已經啟用了全站https,這也是未來網際網路發展的趨勢。
a要給b傳送資料
1)a做乙個對稱金鑰
2)使用金鑰給檔案加密
3)傳送加密以後的檔案和鑰匙
4)b拿鑰匙解密
公鑰加密,私鑰解密
a要給b傳送資料
1)b做一對非對稱的金鑰(公鑰、私鑰)
2)傳送公鑰給a
3)a拿公鑰對資料進行加密
4)傳送加密後的資料給b
5)b拿私鑰解密
將任意長度的資訊轉換為較短的固定長度的值,通常其長度要比資訊小得多。
例如:md5、sha-1、sha-2、sha-256 等。
簽名就是在資訊的後面再加上一段內容(資訊經過hash後的值),可以證明資訊沒有被修改過。hash值一般都會加密後(也就是簽名)再和資訊一起傳送,以保證這個hash值不被修改。
http 協議(hyper text transfer protocol,超文字傳輸協議):是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議 。
https 協議(hypertext transfer protocol over secure socket layer):可以理解為http+ssl/tls, 即 http 下加入 ssl 層,https 的安全基礎是 ssl,因此加密的詳細內容就需要 ssl,用於安全的 http 資料傳輸。
如上圖所示 https 相比 http 多了一層 ssl/tls
ssl協議可分為兩層: ssl握手協議(ssl handshake protocol):它建立在ssl記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。相當於連線
ssl記錄協議(ssl record protocol):它建立在可靠的傳輸協議(如tcp)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。 相當於通訊
ssl協議提供的服務主要有:
ssl:身份認證和資料加密。保證資料完整性
1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;
2)加密資料以防止資料中途被竊取;
3)維護資料的完整性,確保資料在傳輸過程中不被改變。
http請求過程中,客戶端與伺服器之間沒有任何身份確認的過程,資料全部明文傳輸,「裸奔」在網際網路上,所以很容易遭到黑客的攻擊。客戶端發出的請求很容易被黑客截獲,如果此時黑客冒充伺服器,則其可返回任意資訊給客戶端,而不被客戶端察覺。
所以 http 傳輸面臨的風險有:
竊聽風險:黑客可以獲知通訊內容。
篡改風險:黑客可以修改通訊內容。
冒充風險:黑客可以冒充他人身份參與通訊。
而ssl 證書:既可以安全的獲取公鑰,又能防止黑客冒充
證書:.crt, .pem
私鑰:.key
證書請求檔案:.csr
ssl 證書中包含的具體內容有:
(1)證書的發布機構(ca認證中心)
(2)證書的有效期
(3)公鑰
(4)證書所有者
(5)簽名 ----- 簽名就可以理解為是鈔票裡面的乙個防偽標籤。
客戶端在接受到服務端發來的ssl證書時,會對證書的真偽進行校驗,以瀏覽器為例說明如下:
(1)首先瀏覽器讀取證書中的證書所有者、有效期等資訊進行一一校驗
(2)瀏覽器開始查詢作業系統中已內建的受信任的證書發布機構ca,與伺服器發來的證書中的頒發者ca比對,用於校驗證書是否為合法機構頒發
(3)如果找不到,瀏覽器就會報錯,說明伺服器發來的證書是不可信任的。
(4)如果找到,那麼瀏覽器就會從作業系統中取出頒發者ca 的公鑰,然後對伺服器發來的證書裡面的簽名進行解密
(5)瀏覽器使用相同的hash演算法計算出伺服器發來的證書的hash值,將這個計算的hash值與證書中簽名做對比
(6)對比結果一致,則證明伺服器發來的證書合法,沒有被冒充
(7)此時瀏覽器就可以讀取證書中的公鑰,用於後續加密了
(8)client與web協商對稱加密演算法,client生成乙個對稱加密金鑰並使用web公鑰加密,傳送給web伺服器,web伺服器使用web私鑰解密
(9)使用對稱加密金鑰傳輸資料,並校驗資料的完整性
所以相比http,https 傳輸更加安全
(1) 所有資訊都是加密傳播,黑客無法竊聽。
(2) 具有校驗機制,一旦被篡改,通訊雙方會立刻發現。
(3) 配備身份證書,防止身份被冒充。
綜上所述,相比 http 協議,https 協議增加了很多握手、加密解密等流程,雖然過程很複雜,但其可以保證資料傳輸的安全。
https 缺點:
ssl 證書費用很高,以及其在伺服器上的部署、更新維護非常繁瑣
https 降低使用者訪問速度(多次握手)
**改用https 以後,由http 跳轉到 https 的方式增加了使用者訪問耗時(多數**採用302跳轉)
https 涉及到的安全演算法會消耗 cpu 資源,需要增加大量機器(https訪問過程需要加解密)
https協議詳解
ssl secure socket layer https secure hypertext transfer protocol 安全超文字傳輸協議 https解決的問題 1 信任主機的問題.採用https 的server 必須從ca 申請乙個用於證明伺服器用途型別的證書.改證書只有用於對應的ser...
https協議詳解
ssl secure socket layer https secure hypertext transfer protocol 安全超文字傳輸協議 https解決的問題 1 信任主機的問題.採用https 的server 必須從ca 申請乙個用於證明伺服器用途型別的證書.改證書只有用於對應的ser...
HTTPS協議詳解 三 PKI 體系
1 rsa身份驗證的隱患 身份驗證和金鑰協商是tls的基礎功能,要求的前提是合法的伺服器掌握著對應的私鑰。但rsa演算法無法確保伺服器身份的合法性,因為公鑰並不包含伺服器的資訊,存在安全隱患 客戶端c和伺服器s進行通訊,中間節點m截獲了二者的通訊 節點m自己計算產生一對公鑰pub m和私鑰pri m...