超文字傳輸協議—伺服器與客戶端進行資料互動的一種形式
請求載體(瀏覽器)的身份標識
包含當前作業系統的版本、當前瀏覽器的版本
請求完畢後,是保持連線還是斷開連線
close
keep-alive
伺服器響應回客戶端的資料型別
常見的**格式型別如下:
text/html : html格式
text/plain :純文字格式
text/xml : xml格式
image/gif :gif格式
image/jpeg :jpg格式
image/png:png格式
另外一種常見的**格式是上傳檔案之時使用的:
multipart/form-data : 需要在表單中進行檔案上傳時,就需要使用該格式
安全的超文字傳輸協議
伺服器和客戶端互動過程中,所傳輸的資料是進行加密的
https協議採用的是證書秘鑰加密
https的通訊原理主要包括幾點:發起請求、驗證身份、協商金鑰、加密會話,具體流程如下:
單項(雙向)驗證:
客戶端向伺服器發起建立https請求
伺服器向客戶端傳送數字證書
客戶端驗證數字證書,證書驗證通過後客戶端生成會話金鑰(雙向驗證則此處客戶端會向服務端傳送證書)。
伺服器會生成會話金鑰(雙向驗證此處伺服器也會對客戶端的證書驗證)。
客戶端與服務端開始進行加密會話。
具體流程:
1、客戶端生成隨機數r1並且發給伺服器端。
2、告訴伺服器自己支援哪些加密演算法。
1、接收到客戶端的資料後,生成隨機數r2。
2、從客戶端支援的演算法中,選擇乙個伺服器支援的演算法,作為進行會話的金鑰演算法。
3、傳送證書(證書公鑰[申請證書時,會有公鑰給伺服器]、企業資訊、網域名稱過期時間、摘要演算法)給客戶端。
1、接受伺服器傳送的資料:證書的公鑰、會話金鑰生成演算法、隨機數r2。
2、驗證證書的可靠性,先用ca的公鑰解密被加密過後的證書,能解密則說明證書沒有問題,然後通過證書裡提供的摘要演算法進行對資料進行摘要,然後通過自己生成的摘要與服務端傳送的摘要比對。
3、驗證證書合法性,包括證書是否吊銷、是否到期、網域名稱是否匹配,通過後則進行後面的流程。
4、生成隨機數r3。
5、根據金鑰演算法使用r1、r2、r3三個隨機數生成共享金鑰。
6、用服務端證書的公鑰加密隨機數r3並傳送給服務端。
1、伺服器通過私鑰解密客戶端發過來的隨機數r3。
2、根據會話的金鑰演算法使用r1、r2、r3生成會話金鑰。
1、客戶端傳送加密資料發給伺服器端。
2、伺服器響應客戶端。
解密接受的密文資料:伺服器端用會話金鑰解密客戶端傳送的資料。
加密響應的資料:用會話金鑰把響應的資料加密發給客戶端。
3、客戶端接受伺服器端響應的資料
解密資料:客戶端用會話金鑰解密響應資料。
對稱金鑰加密又叫專用金鑰加密或共享金鑰加密,即傳送和接收資料的雙方必使用相同的金鑰對明文進行加密和解密運算。對稱金鑰加密演算法主要包括:des、3des、idea、rc5、rc6等。
1、需要強大的加密演算法
即使分析人員擁有一些密文和生成密文的明文,也不能譯出密文或者發現金鑰。加密演算法應足以抵抗已知明文型別的破譯。
2、保證金鑰的安全
傳送方和接收方必須用安全的方式來獲得金鑰和儲存金鑰,必須保證金鑰的安全。如果有人發現了密匙,並知道了演算法,則使用此密匙加密的所有資料便都是可被竊取。
對稱金鑰加密是雙方使用相同的金鑰,必須以絕對安全的形式傳送金鑰才能保證安全。若果金鑰洩露,加密資料將受到威脅,這點不如非對稱金鑰。
中介軟體可以攔截請求,攔截到秘鑰和密文,從而進行破譯。
公開金鑰加密(public-key cryptography)也稱為非對稱金鑰加密(asymmetric cryptography),是一種密碼學演算法型別。該加密演算法使用兩個不同的金鑰:加密金鑰和解密金鑰。
在這種密碼學方法中,需要一對金鑰,乙個是私人金鑰,另乙個則是公開金鑰。這兩個金鑰是數學相關,用某使用者金鑰加密後所得的資訊,只能用該使用者的解密金鑰才能解密。如果知道了其中乙個,並不能計算出另外乙個。因此如果公開了一對金鑰中的乙個,並不會危害到另外乙個的秘密性質。稱公開的金鑰為公鑰;不公開的金鑰為私鑰。
與對稱金鑰加密相比,優點在於無需共享的通用金鑰,解密的私鑰不發往任何使用者。即使公鑰在網上被截獲,如果沒有與其匹配的私鑰,也無法解密,所截獲的公鑰是沒有任何用處的。
它可以很好地適應開放性的使用環境。因為金鑰管理相對簡單,可方便地實現數字簽名和驗證,對解決電子商務活動中的「瓶頸」,如對傳輸資料進行加密、數字簽名、公證的方法等,很有實用價值。
1、中介軟體可以對公鑰進行攔截篡改,無法保證接收端拿到的就是原先的、沒有被修改的公鑰。
2、效率比較低,處理起來更加複雜,通訊過程中使用就有一定的效率問題而影響 通訊速度。
常見的公鑰加密演算法有: rsa、elgamal、揹包演算法、rabin(rsa的特例)、迪菲-赫爾曼金鑰交換協議中的公鑰加密演算法、橢圓曲線加密演算法(elliptic curve cryptography, ecc)。
使用最廣泛的是rsa演算法(由發明者rivest、shmir和adleman姓氏首字母縮寫而來)是著名的公開金鑰加密演算法,elgamal是另一種常用的非對稱加密演算法。
數字證書是專門用來識別通訊雙方資訊的乙個證書,它是由certificate authority( ca 認證中心)頒發的。
因為http不校驗通訊的雙方的身份而造成身份偽裝的問題,所以為了解決這個問題,產生了數字證書,使用流程大致如下:
伺服器從大家都信任的第三方機構申請乙個身份證書。
客戶端和伺服器建立連線之前,會請求獲得伺服器申請的證書。
伺服器把證書發給客戶端。
客戶端拿著證書跟第三方機構驗證身份,驗證通過則建立通訊
HTTP協議 HTTPS協議
http協議是基於tcp協議的,當然是要先建立tcp連線了。目前使用的http協議大部分都是1.1.在1.1的協議裡面,預設是開啟了keep alive的,這樣建立的tcp連線,就可以在多次請求中復用。http的報文大概分成三大部分。第一部分是請求行,第二部分是請求的首部,第三部分才是請求的正文實體...
HTTP協議和HTTPS協議
最近http協議,https協議,ssl協議,數字簽名這些老是在眼前跳,但是很多都忘記了,重溫了一把,總結一下 1.http協議 http協議是超文字傳輸協議,埠為80,屬於應用層協議,由請求和響應構成,永遠都是客戶端傳送請求,服務端回送響應。這樣就限制了使用http協議無法實現在客戶端沒有發起請求...
HTTP協議和HTTPS協議
http 超文字傳輸協議 是乙個簡單的請求 響應協議,它通常基於tcp之上 http請求中的常用訊息頭 乙個http響應代表伺服器向客戶端回送的資料,它包括 乙個狀態頭 若干個訊息頭 以及實體內容 1 建立tcp ip連線,客戶端與伺服器通過socket三次握手進行連線 2 客戶端向服務端發起htt...