在做雅虎的時候,發現用第三方工具截取不到客戶端與服務端的通訊,以前重來沒碰到過這種情況,仔細看了看,它的url請求時基於https的,gg了下發現原來https協議和http有着很大的區別。總的來說,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 更多的請求。
符:SSL的簡介:
SSL是Netscape公司所提出的安全保密協議,在瀏覽器(如Internet Explorer、Netscape Navigator)和Web服務器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之間構造安全通道來進行數據傳輸,SSL運行在TCP/IP層之上、應用層之下,爲應用程序提供加密數據通道,它採用了RC4、MD5 以及RSA等加密算法,使用40 位的密鑰,適用於商業信息的加密。
同時,Netscape公司相應開發了HTTPS協議並內置於其瀏覽器中,HTTPS實際上就是SSL over HTTP,它使用默認端口443,而不是像HTTP那樣使用端口80來和TCP/IP進行通信。HTTPS協議使用SSL在發送方把原始數據進行加密,然 後在接受方進行解密,加密和解密需要發送方和接受方通過交換共知的密鑰來實現,因此,所傳送的數據不容易被網絡黑客截獲和解密。
然而,加密和解密過程需要耗費系統大量的開銷,嚴重降低機器的性能,相關測試數據表明使用HTTPS協議傳輸數據的工作效率只有使用HTTP協議傳輸的十 分之一。
假如爲了安全保密,將一個
企業網站所有的
Web應用都啓用SSL技術來加密,並使用HTTPS協議進行傳輸,那麼該網站的性能和效率將會大大降低,而且沒有這個必要,因爲一般來說並不是所有數據都要求那麼高的安全保密級別,所以,我們只需對那些涉及機密數據的交互處理使用HTTPS協議,這樣就做到魚與熊掌兼得。總之不需要用https 的地方,就儘量不要用。