詳解http和https的區別 (轉自http://www.jzxue.com/jianzhanzhinan/jianzhanrumen/201103/29-6925.html)
html
http與https有什麼區別呢?本文詳解http和https的區別。算法
只要上過網的朋友必定接觸過「HTTP」,每次開網頁的 時候,不論是什麼網址,其前面都會出現HTTP字樣,好比「http://www.jzxue.com」、「http://62.135.5.7」等等, 而有些時候打開如銀行等對安全性要求很高的網站的時候其網址的前綴又會變做「https」,這兩個前綴究竟是什麼意思?有什麼做用呢?相信不少用戶朋友對 此並不瞭解。下面就由我給你們解釋一二。瀏覽器
http的全稱是Hypertext Transfer Protocol Vertion (超文本傳輸協議),說通俗點就是用網絡連接傳輸文本信息的協議,咱們如今所看的各種網頁就是這個東東。每次開網頁時爲何要出現「http://」呢? 其實這個道理很是簡單,由於你要得到網絡上超文本信息,那麼你確定要遵循其超文本傳輸的規範,就如同你是「天地會」成員,你和其餘「天地會」成員接頭時首 先要說出「地震高崗,一派西山千古秀!」和「門朝大海,三合河水萬年流」這樣的接頭暗號,說出後才能和會友進行溝通。因此每次開網頁出現的 「http://」就如同上面所講的接頭暗號,當暗號正確後才能得到相關信息。安全
看完了上面的解釋,或許你已經懂得是爲何每次開網頁時要出現「http」了。那麼接下來咱們再談談爲何有時候網頁的接頭暗號又會變做「https」呢?服務器
HTTPS的全稱是Secure Hypertext Transfer Protocol(安全超文本傳輸協議),是在http協議基礎上增長了使用SSL加密傳送信息的協議。咱們仍是用天地會接頭的例子來說,你們可能以爲每 次天地會接頭都是使用「地震高崗,一派西山千古秀!」這類婦孺皆知的接頭暗號,這樣的組織還有什麼安全性可言?只要說出了暗號那麼就可能得到天地會的相關 祕密。事實上並非這樣的,若是僅僅是靠一個婦孺皆知的接頭暗號進行信息保密,天地會可能早被清兵圍剿了,何來那麼多傳奇故事呢?他們之間的交流除了使用 了接頭暗號外,可能仍是用了「黑話」,就是一些僅僅只有天地會成員才能聽懂的黑話,這樣即便天地會成員之間的交談信息被泄露出去了,沒有相關揭祕的東西, 誰也不會知道這些黑話是什麼?一樣HTTPS協議就如同上面天地會的信息交談同樣,它也將本身須要傳輸的超文本協議經過SSL加密,讓明文變成了「黑話」 即便傳輸的信息被人捕獲,捕獲的人也沒辦法知道其實際內容。網絡
因此http和https之間的區別就在於其傳輸的內容是否加密和是不是開發性的內容。這也是你爲何經常看見https開頭的網址都是一些相似銀行網站的這類網址的緣由。性能
下面是http和https的概念測試
什麼是HTTPS:
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議
它是一個安全通訊通道,它基於HTTP開發,用於在客戶計算機和服務器之間交換信息。它使用安全套接字層(SSL)進行信息交換,簡單來講它是HTTP的安全版。
它 是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操做,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安 全全套接字層(SSL)做爲HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通訊。)SSL使 用40 位關鍵字做爲RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,若是須要的話用戶能夠確認發送者是誰。
HTTPS和HTTP的區別:
https協議須要到ca申請證書,通常免費證書不多,須要交費。
http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議
http和https使用的是徹底不一樣的鏈接方式用的端口也不同,前者是80,後者是443。
http的鏈接很簡單,是無狀態的
HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議 要比http協議安全
HTTPS解決的問題:
1 . 信任主機的問題. 採用https 的server 必須從CA 申請一個用於證實服務器用途類型的證書. 改證書只有用於對應的server 的時候,客戶度纔信任次主機. 因此目前全部的銀行系統網站,關鍵部分應用都是https 的. 客戶經過信任該證書,從而信任了該主機. 其實這樣作效率很低,可是銀行更側重安全. 這一點對咱們沒有任何意義,咱們的server ,採用的證書無論本身issue 仍是從公衆的地方issue, 客戶端都是本身人,因此咱們也就確定信任該server.
2 . 通信過程當中的數據的泄密和被竄改
1. 通常意義上的https, 就是 server 有一個證書.
a) 主要目的是保證server 就是他聲稱的server. 這個跟第一點同樣.
b) 服務端和客戶端之間的全部通信,都是加密的.
i. 具體講,是客戶端產生一個對稱的密鑰,經過server 的證書來交換密鑰. 通常意義上的握手過程.
ii. 加下來全部的信息往來就都是加密的. 第三方即便截獲,也沒有任何意義.由於他沒有密鑰. 固然竄改也就沒有什麼意義了.
2. 少量對客戶端有要求的狀況下,會要求客戶端也必須有一個證書.
a) 這裏客戶端證書,其實就相似表示我的信息的時候,除了用戶名/密碼, 還有一個CA 認證過的身份. 應爲我的證書通常來講上別人沒法模擬的,全部這樣可以更深的確認本身的身份.
b) 目前少數我的銀行的專業版是這種作法,具體證書多是拿U盤做爲一個備份的載體.
HTTPS 必定是繁瑣的.
a) 原本簡單的http協議,一個get一個response. 因爲https 要還密鑰和確認加密算法的須要.單握手就須要6/7 個往返.
i. 任何應用中,過多的round trip 確定影響性能.
b) 接下來纔是具體的http協議,每一次響應或者請求, 都要求客戶端和服務端對會話的內容作加密/解密.
i. 儘管對稱加密/解密效率比較高,但是仍然要消耗過多的CPU,爲此有專門的SSL 芯片. 若是CPU 信能比較低的話,確定會下降性能,從而不能serve 更多的請求.
ii. 加密後數據量的影響.
1. 這個我用128bit 的RC2 測試了一下,加密後數量跟加密前基本相同