漲知識時間:https和http有什么區(qū)別
什么是 HTTPS?
HTTPS (基于安全套接字層的超文本傳輸協(xié)議 或者是 HTTP over SSL) 是一個 Netscape 開發(fā)的 Web 協(xié)議。
你也可以說:HTTPS = HTTP + SSL
HTTPS 在 HTTP 應(yīng)用層的基礎(chǔ)上使用安全套接字層作為子層。
為什么需要 HTTPS ?
超文本傳輸協(xié)議 (HTTP) 是一個用來通過互聯(lián)網(wǎng)傳輸和接收信息的協(xié)議。HTTP 使用請求/響應(yīng)的過程,因此信息可在服務(wù)器間快速、輕松而且精確的進(jìn)行傳輸。當(dāng)你訪問 Web 頁面的時候你就是在使用 HTTP 協(xié)議,但 HTTP 是不安全的,可以輕松對竊聽你跟 Web 服務(wù)器之間的數(shù)據(jù)傳輸。在很多情況下,客戶和服務(wù)器之間傳輸?shù)氖敲舾行?,需要防止未?jīng)授權(quán)的訪問。為了滿足這個要求,網(wǎng)景公司(Netscape)推出了HTTPS,也就是基于安全套接字層的 HTTP 協(xié)議。
HTTP 和 HTTPS 的相同點(diǎn)
大多數(shù)情況下,HTTP 和 HTTPS 是相同的,因為都是采用同一個基礎(chǔ)的協(xié)議,作為 HTTP 或 HTTPS 客戶端——瀏覽器,設(shè)立一個連接到 Web 服務(wù)器指定的端口。當(dāng)服務(wù)器接收到請求,它會返回一個狀態(tài)碼以及消息,這個回應(yīng)可能是請求信息、或者指示某個錯誤發(fā)送的錯誤信息。系統(tǒng)使用統(tǒng)一資源定位器 URI 模式,因此資源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一個協(xié)議頭(https)的說明,其他都是一樣的。
HTTP 和 HTTPS 的不同之處
HTTP 的 URL 以 http:// 開頭,而 HTTPS 的 URL 以 https:// 開頭
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 標(biāo)準(zhǔn)端口是 80 ,而 HTTPS 的標(biāo)準(zhǔn)端口是 443
在 OSI 網(wǎng)絡(luò)模型中,HTTP 工作于應(yīng)用層,而 HTTPS 工作在傳輸層
HTTP 無需加密,而 HTTPS 對傳輸?shù)臄?shù)據(jù)進(jìn)行加密
HTTP 無需證書,而 HTTPS 需要認(rèn)證證書
HTTPS 如何工作?
使用 HTTPS 連接時,服務(wù)器要求有公鑰和簽名的證書。
當(dāng)使用 https 連接,服務(wù)器響應(yīng)初始連接,并提供它所支持的加密方法。作為回應(yīng),客戶端選擇一個連接方法,并且客戶端和服務(wù)器端交換證書驗證彼此身份。完成之后,在確保使用相同密鑰的情況下傳輸加密信息,然后關(guān)閉連接。為了提供 https 連接支持,服務(wù)器必須有一個公鑰證書,該證書包含經(jīng)過證書機(jī)構(gòu)認(rèn)證的密鑰信息,大部分證書都是通過第三方機(jī)構(gòu)授權(quán)的,以保證證書是安全的。
換句話說,HTTPS 跟 HTTP 一樣,只不過增加了 SSL。
HTTP 包含如下動作:
瀏覽器打開一個 TCP 連接
瀏覽器發(fā)送 HTTP 請求到服務(wù)器端
服務(wù)器發(fā)送 HTTP 回應(yīng)信息到瀏覽器
TCP 連接關(guān)閉
SSL 包含如下動作:
驗證服務(wù)器端
允許客戶端和服務(wù)器端選擇加密算法和密碼,確保雙方都支持
驗證客戶端(可選)
使用公鑰加密技術(shù)來生成共享加密數(shù)據(jù)
創(chuàng)建一個加密的 SSL 連接
基于該 SSL 連接傳遞 HTTP 請求
什么時候該使用 HTTPS?
銀行網(wǎng)站、支付網(wǎng)關(guān)、購物網(wǎng)站、登錄頁、電子郵件以及一些企業(yè)部門的網(wǎng)站應(yīng)該使用 HTTPS,例如:
PayPal: https://www.paypal.com
Google AdSense: https://www.google.com/adsense/
如果某個網(wǎng)站要求你填寫信用卡信息,首先你要檢查該網(wǎng)頁是否使用 https 加密連接,如果沒有,那么請不要輸入任何敏感信息如信用卡號。
瀏覽器集成
多數(shù)瀏覽器在收到一個無效證書的時候都會顯示警告信息,而一些老的瀏覽器會彈出對話框讓用戶選擇是否繼續(xù)瀏覽。新的瀏覽器一般在整個窗口顯示橫幅的警告信息,同時在地址欄上顯示該網(wǎng)站的安全信息。如果網(wǎng)站中包含加密和非加密的混合內(nèi)容,多數(shù)瀏覽器會提示警告信息。
許多人以為,出于安全考慮,瀏覽器不會在本地保存HTTPS緩存。實際上,只要在HTTP頭中使用特定命令,HTTPS是可以緩存的。
微軟的IE項目經(jīng)理Eric Lawrence寫道:
"說來也許令人震驚,只要HTTP頭允許這樣做,所有版本的IE都緩存HTTPS內(nèi)容。比如,如果頭命令是Cache-Control:max-age=600,那么這個網(wǎng)頁就將被IE緩存10分鐘。IE的緩存策略,與是否使用HTTPS協(xié)議無關(guān)。(其他瀏覽器在這方面的行為不一致,取決于你使用的版本,所以這里不加以討論。)"