Https 原理

http

HTTP:是互聯網上應用最爲普遍的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可使瀏覽器更加高效,使網絡傳輸減小。
html

https

是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,其安全基礎是SSL,所以加密的詳細內容就須要SSL。,即HTTPS實際上是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會經過TLS進行加密,因此傳輸的數據都是加密後的數據
算法

(注意:HTTP協議傳輸的數據都是未加密的,也就是明文的,所以使用HTTP協議傳輸隱私信息很是不安全,爲了保證這些隱私數據能加密傳輸,因而網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。)瀏覽器


區別

1)https協議須要到ca申請證書,通常免費證書較少,於是須要必定費用。功能越強大的證書費用越高。


2)http是超文本傳輸協議,信息是明文傳輸,https則是具備安全性的ssl加密傳輸協議。


3)SEO方面:在2015年以前百度是沒法收錄HTTPS頁面的,不過自從2015年5月份百度搜索全站HTTPS加密後,就已經能夠收錄HTTPS了。谷歌則是從2014年起便開始收錄HTTPS頁面,而且HTTPS頁面權重比HTTP頁面更高。從SEO的角度來講,HTTPS和HTTP區別不大,甚至HTTPS效果更好。


4)性能問題:https作了加密就意味着客戶端服務端也須要附帶解密步驟,相比來講,在通信快捷上,性能有所不如http。


原理

1. 客戶端發起HTTPS請求

就是用戶在瀏覽器裏輸入一個https網址,而後鏈接到server的443端口。安全

2. 服務端的配置

採用HTTPS協議的服務器必需要有一套數字證書,若是沒有請聯繫易維信客服購買全球信任的SSL證書,而使用受信任的CA簽發的證書則不會彈出提示頁面(GeoTrust,Symantec都是知名的CA機構)。這套證書其實就是一對公鑰和私鑰。若是對公鑰和私鑰不太理解,能夠想象成一把鑰匙和一個鎖頭,只是全世界只有你一我的有這把鑰匙,你能夠把鎖頭給別人,別人能夠用這個鎖把重要的東西鎖起來,而後發給你,由於只有你一我的有這把鑰匙,因此只有你才能看到被這把鎖鎖起來的東西。
服務器

3. 傳送證書

這個證書其實就是公鑰,只是包含了不少信息,如證書的頒發機構,過時時間等等。
網絡

4. 客戶端解析證書

這部分工做是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,好比頒發機構,過時時間等等,若是發現異常,則會彈出一個警告框,提示證書存在問題。若是證書沒有問題,那麼就生成一個隨即值。而後用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,否則看不到被鎖住的內容。
性能

5. 傳送加密信息

這部分傳送的是用證書加密後的隨機值,目的就是讓服務端獲得這個隨機值,之後客戶端和服務端的通訊就能夠經過這個隨機值來進行加密解密了。加密

6. 服務段解密信息

服務端用私鑰解密後,獲得了客戶端傳過來的隨機值(私鑰),而後把內容經過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰經過某種算法混合在一塊兒,這樣除非知道私鑰,否則沒法獲取內容,而正好客戶端和服務端都知道這個私鑰,因此只要加密算法夠彪悍,私鑰夠複雜,數據就夠安全。設計

7. 傳輸加密後的信息

這部分信息是服務段用私鑰加密後的信息,能夠在客戶端被還原server

8. 客戶端解密信息

客戶端用以前生成的私鑰解密服務段傳過來的信息,因而獲取瞭解密後的內容。整個過程第三方即便監聽到了數據,也一籌莫展。

優勢

1)客戶端產生的密鑰只有客戶端和服務器端能獲得;

2)加密的數據只有客戶端和服務器端才能獲得明文;

3)客戶端到服務端的通訊是安全的。

相關文章
相關標籤/搜索