1. 程式人生 > >Android之B面試題⑤HTTPS和HTTP的區別

Android之B面試題⑤HTTPS和HTTP的區別

1. 什麼是 HTTPS?
       HTTPS (基於安全套接字層的超文字傳輸協議 或者是 HTTP over SSL) 是一個 Netscape 開發的 Web 協議
       你也可以說:HTTPS = HTTP + SSL
       HTTPS 在 HTTP 應用層的基礎上使用安全套接字層作為子層
2. 為什麼需要 HTTPS ?
       超文字傳輸協議 (HTTP) 是一個用來通過網際網路傳輸和接收資訊的協議。HTTP 使用請求/響應的過程,因此資訊可在伺服器間快速、輕鬆而且精確的進行傳輸。當你訪問 Web 頁面的時候你就是在使用 HTTP 協議,但 HTTP 是不安全的,可以輕鬆對竊聽你跟 Web 伺服器之間的資料傳輸
。在很多情況下,客戶和伺服器之間傳輸的是敏感歇息,需要防止未經授權的訪問。為了滿足這個要求,網景公司(Netscape)推出了HTTPS,也就是基於安全套接字層的 HTTP 協議。

3. HTTP 和 HTTPS 的相同點
       大多數情況下,HTTP 和 HTTPS 是相同的,因為都是採用同一個基礎的協議,作為 HTTP 或 HTTPS 客戶端——瀏覽器,設立一個連線到 Web 伺服器指定的埠。當伺服器接收到請求,它會返回一個狀態碼以及訊息,這個迴應可能是請求資訊、或者指示某個錯誤傳送的錯誤資訊系統使用統一資源定位器 URI 模式,因此資源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一個協議頭(https)的說明
,其他都是一樣的。


4. HTTP 和 HTTPS 的不同之處
       HTTP 的 URL 以 http:// 開頭,而 HTTPS 的 URL 以 https:// 開頭;
       HTTP 是不安全的,而 HTTPS 是安全的;
       HTTP 標準埠是 80 ,而 HTTPS 的標準埠是 443
       在 OSI 網路模型中,HTTP 工作於應用層,而 HTTPS 工作在傳輸層
       HTTP 無需加密,而 HTTPS 對傳輸的資料進行加密;

       HTTP 無需證書,而 HTTPS 需要認證證書;

5. HTTPS 如何工作?
       使用 HTTPS 連線時,伺服器要求有公鑰和簽名的證書

       當使用 https 連線,伺服器響應初始連線,並提供它所支援的加密方法。作為迴應,客戶端選擇一個連線方法,並且客戶端和伺服器端交換證書驗證彼此身份。完成之後,在確保使用相同金鑰的情況下傳輸加密資訊,然後關閉連線。為了提供 https 連線支援,伺服器必須有一個公鑰證書該證書包含經過證書機構認證的金鑰資訊,大部分證書都是通過第三方機構授權的,以保證證書是安全的。

       換句話說,HTTPS 跟 HTTP 一樣,只不過增加了 SSL。

6. HTTP 包含如下動作:

       瀏覽器開啟一個 TCP 連線-->瀏覽器傳送 HTTP 請求到伺服器端-->伺服器傳送 HTTP 迴應資訊到瀏覽器-->TCP 連線關閉

7. SSL 包含如下動作:

      驗證伺服器端-->允許客戶端和伺服器端選擇加密演算法和密碼,確保雙方都支援-->驗證客戶端(可選)-->使用公鑰加密技術來生成共享加密資料-->建立一個加密的 SSL 連線-->基於該 SSL 連線傳遞 HTTP 請求

8. 什麼時候該使用 HTTPS?

       銀行網站、支付閘道器、購物網站、登入頁、電子郵件以及一些企業部門的網站應該使用 HTTPS,例如:
PayPal: https://www.paypal.com
Google AdSense: https://www.google.com/adsense/

       如果某個網站要求你填寫信用卡資訊,首先你要檢查該網頁是否使用 https 加密連線,如果沒有,那麼請不要輸入任何敏感資訊如信用卡號。

9. 瀏覽器整合

       多數瀏覽器在收到一個無效證書的時候都會顯示警告資訊,而一些老的瀏覽器會彈出對話方塊讓使用者選擇是否繼續瀏覽。新的瀏覽器一般在整個視窗顯示橫幅的警告資訊,同時在位址列上顯示該網站的安全資訊。如果網站中包含加密和非加密的混合內容,多數瀏覽器會提示警告資訊。
=======================================================

    在URL前加https://字首表明是用SSL加密的。你的電腦與伺服器之間收發的資訊傳輸將更加安全。 Web伺服器啟用SSL需要獲得一個伺服器證書並將該證書與要使用SSL的伺服器繫結。 http和https使用的是完全不同的連線方式用的埠也不一樣,前者是80,後者是443
    HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。

    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數字認證,如果需要的話使用者可以確認傳送者是誰

10. 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. 加密後資料量的影響. 所以,才會出現那麼多的安全認證提示。

轉載自:http://blog.csdn.net/whatday/article/details/38147103