http(hypertext transfer protocol vertion )超文字傳輸協議,被用於在web瀏覽器和**伺服器之間傳遞資訊,http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者截獲了傳輸報文,就可以讀取內容,所以不建議傳輸一些敏感資訊。
為了解決這一缺陷,需要使用另一種協議,安全套接字超文字傳輸協議(https),為了資料傳輸的安全,https在http的基礎上加入了ssl 協議,ssl依靠證書來檢驗伺服器的身份,並且還為客戶端與伺服器之間的通訊加密。
每次開網頁時為什麼要出現「http://」呢? 其實這個道理非常簡單,因為你要獲得網路上超文字資訊,那麼你肯定要遵循其超文字傳輸的規範。
基本概念:
http:是網際網路上應用最為廣泛的一種網路協議,是乙個客戶端和伺服器端請求和應答的標準(tcp),用於從www伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。
https:是以安全為目標的http通道,簡單講是http的安全版,即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。
https協議的主要作用可以分為兩種:一種是建立乙個資訊保安通道,來保證資料傳輸的安全;另一種就是確認**的真實性。
http與https的區別:
http協議傳輸的資料都是未加密的,也就是明文的,因此使用http協議傳輸隱私資訊非常不安全,為了保證這些隱私資料能加密傳輸,於是網景公司設計了ssl(secure sockets layer)協議用於對http協議傳輸的資料進行加密,從而就誕生了https。簡單來說,https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。
https和http的區別主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
4、http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。
客戶端在使用https方式與web伺服器通訊時有以下幾個步驟:
(1)客戶端使用https的url訪問web伺服器,要求與web伺服器建立ssl連線
(2)web伺服器收到客戶端請求後,會將**的證書資訊(包含公鑰)傳送給客戶端
(3)客戶端與伺服器之開始協商ssl連線的安全等級,也就是資訊加密的等級
(4)客戶端根據雙方同意的安全等級,建立會話金鑰,然後利用公鑰對會話金鑰加密,並傳送給伺服器
(5)伺服器利用自己的私鑰解密出會話金鑰
(6)伺服器利用會話金鑰與客戶端進行通訊
https的優缺點:
優點:是加密傳輸、身份認證的網路協議,比http安全,防止資料在傳輸過程中被竊取、改變,確保完整性。增加攻擊成本。
缺點:不是絕對安全,加密範圍有限、握手階段比較費時、增加耗電、不如http高效、需要花錢、通常需要繫結ip
https解決的問題:
1 . 信任主機的問題. 採用https 的server 必須從ca 申請乙個用於證明伺服器用途型別的證書(ca證書:這裡的證書類似於解密的乙個簽名). 改證書只有用於對應的server 的時候,客戶度才信任次主機。所以目前所有的銀行系統**,關鍵部分應用都是https 的,客戶通過信任該證書,從而信任了該主機,其實這樣做效率很低,但是銀行更側重安全。這一點對我們沒有任何意義,我們的server 採用的證書不管自己issue 還是從公眾的地方issue,客戶端都是自己人,所以我們也就肯定信任該server。
2 . 通訊過程中的資料的洩密和被竄改
1)一般意義上的https, 就是 server 有乙個證書.
a) 主要目的是保證server 就是他聲稱的server. 這個跟第一點一樣.
b) 服務端和客戶端之間的所有通訊,都是加密的.
i. 具體講,是客戶端產生乙個對稱的金鑰,通過server 的證書來交換金鑰,一般意義上的握手過程。
ii. 加下來所有的資訊往來就都是加密的,第三方即使截獲,也沒有任何意義,因為他沒有金鑰,當然竄改也就沒有什麼意義了。
2)少許對客戶端有要求的情況下,會要求客戶端也必須有乙個證書。
a) 這裡客戶端證書,其實就類似表示個人資訊的時候,除了使用者名稱/密碼, 還有乙個ca 認證過的身份,個人證書一般來說上別人無法模擬的,所有這樣能夠更深的確認自己的身份。
b) 目前少數個人銀行的專業版是這種做法,具體證書可能是拿u盤作為乙個備份的載體。
金鑰交換演算法:
使用對稱加密演算法時,金鑰交換是個大難題,所以diffie和hellman提出了著名的diffie-hellman金鑰交換演算法。
diffie-hellman金鑰交換演算法原理:
1 (1)alice與bob確定兩個大素數n和g,這兩個數不用保密23 (2)alice選擇另乙個大隨機數x,並計算a如下:a=g^x mod n
45 (3)alice將a發給bob
67 (4)bob 選擇另乙個大隨機數y,並計算b如下:b=g^y mod n
89 (5)bob將b發給alice
1011 (6)計算秘密金鑰k1如下:k1=b^x mod n
1213 (7)計算秘密金鑰k2如下:k2=a^y mod n
1415 k1=k2,因此alice和bob可以用其進行加解密
Http傳送請求和接收請求
使用get無參請求方式 get 無參方式 主方法 public static void main string args throws ioexception http接收端 value home public jsonobject home 使用get有參請求方式 get有參,使用namevalu...
http 請求方式 GET請求和POST請求
http 請求方式 get請求和post請求 1.get請求,獲得伺服器資源 post請求,向伺服器發布資訊 2.get請求長度有限制,不適合 檔案傳輸 這類大量資料 3.get請求位址列會出現,一些安全性高的多採用post,把請求引數移到資訊體 4.瀏覽器通常會用快取儲存資料,如果訪問的是相同的 ...
HTTP請求和HTTP響應
客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了乙個http請求,乙個完整 的http請求包括 描述客戶端的請求方式,請求資源名稱,使用的http協議版本號 請求方式get post 預設是get可以更改表單提交方式為post 區別主要在資料傳遞上 get可以在url位址後...