1. 程式人生 > >https/ssl原理

https/ssl原理

圖解 tcp通信 如果 ssl通信 加解密 smtp 機構 數字證書 原理

在此總結下https協議原理。

http問題

1)明文傳輸數據,被抓包後很容易可以看出傳輸內容,傳輸敏感數據有安全問題。

2)不能保證進行http通信的客戶端與服務器是合法的。

為了解決這兩個問題,需要對http數據進行加密和對通信雙方進行認證。https就是在http協議的下層加了一個ssl協議,通過ssl實現了上述加密和認證的功能。

https協議原理

通常,http直接和tcp通信。而https協議,則是http和ssl通信,ssl和tcp通信,加解密的功能在ssl層實現。ssl是獨立於http的協議,也可以用於應用層的smtp、telnet等協議。

要了解ssl原理,先要理解公鑰加密和對稱加密。公鑰加密的優點是傳輸秘鑰方便,除了加密還可以做認證,缺點是運行比對稱加密慢很多。對稱加密缺點是不方便傳輸秘鑰,優點是加密速度快。ssl結合了公鑰加密和對稱加密的優點,使用公鑰加密傳輸對稱加密的秘鑰。實際運行中,服務器將通信用的對稱秘鑰用自身私鑰加密後傳輸給客戶端,然後雙方通信時使用此對稱秘鑰對數據進行加解密。

那麽客戶端如何確保公鑰來自服務器?

通過數字認證機構頒發的數字證書,以及客戶端內部嵌入的數字認證機構公鑰集合。具體流程如下:

1)服務器運營人員向數字認證機構申請證書,申請證書時填入服務器公鑰,數字認證機構用自身私鑰加密服務器公鑰生成一個數字證書(包含認證機構ID、加密後的服務器公鑰和公鑰明文),然後運營人員把證書放在服務器上。

2)客戶端請求時,服務端把自身證書和公鑰下發給服務端,客戶端通過證書中的數字認證機構ID查詢內部嵌入的公鑰列表,得到認證機構的公鑰,並使用此公鑰解密得到服務端公鑰,然後驗證公鑰如果一致,則同時驗證了認證結構與服務器的合法性。

https的優缺點

https可以很大程度提高安全性,google、百度等許多大網站全站都實現了https,但使用https時,http處理速度回變慢,一種是多了一層,通信量增加,通信變慢,一種是加解密需要消耗cpu、內存等資源,處理時間增加,負載增加。和使用http相比,可能會變慢2~100倍(數據來自《圖解HTTP》),所以只有在需要信息隱藏時才使用https,可以節省資源。

PS:

客戶端證書與服務端證書原理是一樣的,常見的客戶端證書比如網銀U盾,證書是由銀行頒發的,用於在服務器端認證客戶。

https/ssl原理