第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 HTTP 入門教程 HTTP 入門教程 HTTP 協(xié)議和 HTTPS 協(xié)議的對比

HTTP 協(xié)議和 HTTPS 協(xié)議的對比

在前面的章節(jié)中我們對 Http 已經(jīng)有了一個很全面的了解,Http 在滿足通信的基本功能外,也提供了很多豐富的交互功能,但是在安全性方面,Http 還有很多不足的地方,Https 就是為了解決這個問題而誕生。目前 google / 蘋果 / 騰訊的小程序接口都強制要求使用 Https 安全協(xié)議。以后的網(wǎng)站全面采用 Https 協(xié)議已經(jīng)是一個可以遇見的趨勢了。

1. HTTP 不足

1.1 明文傳輸

Http 的整個報文信息,從客戶端到服務(wù)端到都是明文傳輸?shù)健P畔奈覀兊碾娔X發(fā)出去,中間需要經(jīng)歷哪些設(shè)備才能被另一臺電腦接收,我們是不好確定也很難評估的。有可能跨越多個運營商機房,有可能通過海底光纜橫跨大洋,有可能穿過 某某學(xué)校 / 某某廠房 / 某某集團 的內(nèi)部 路由器/ 交換機 / 集線器 等。中間這么多節(jié)點我們都是控制不到的,所以只要別人有心,我們就很難保證我們的信息不被泄漏。

網(wǎng)絡(luò)傳輸

1.2 沒有驗證通信方身份

通信雙方無法確認(rèn)對方的身份是否正確。

案例1:
本地電腦有木馬,路由表被踹改,www.baidu.com 的域名被解析到另一臺虛假的服務(wù)器,此時你在瀏覽器訪問的百度就是黑客的另一個釣魚網(wǎng)站,然后給你推送了很多虛假消息,此時客戶端很難知情。

案例2:
路由表沒問題,但是目標(biāo)服務(wù)器被人黑了,處理不了請求,此時有其它服務(wù)冒充提供服務(wù)。
偽裝

案例3:
某個資源只有特定用戶有查詢的權(quán)限,黑客通過偽造該客戶端一樣的請求來查詢,服務(wù)端只是簡單的根據(jù)入?yún)⑴袛啵o法知道對應(yīng)客戶端的真實性,于是消息很容易泄漏。

1.3 無法保證數(shù)據(jù)完整性

消息篡改

  1. 客戶端 A 像服務(wù)端 B 充值 100。
  2. A 的網(wǎng)絡(luò)報文被黑客竊取了,修改了中間的金額,后面繼續(xù)把報文傳向 B,此時就造成了嚴(yán)重的金額損失。

上面的例子如果沒有做數(shù)據(jù)完整性校驗就很容易被攻陷。當(dāng)然很多系統(tǒng)即使用 Http 協(xié)議,也可以自己在業(yè)務(wù)層參數(shù)中定義簽名信息,實現(xiàn)自己的簽名算法保障數(shù)據(jù)的完整性。

signature = MD5(privateKey + MD5( 參數(shù)1 + 參數(shù)2 + 參數(shù)2 +...))

簽名算法有很多種,系統(tǒng)的簽名算法是機密性的信息,不能對外透漏。例如上面的算法中,將請求的所有參數(shù)依次相加然后做 MD5 運算,取得的值再與約定的一個私密 key 再進行一次 MD5,最后生成一個簽名 signature。這個算法客戶端和服務(wù)端都是知道的,所以服務(wù)端接收到請求后,就拿著獲取到的參數(shù)做執(zhí)行一遍通用的算法,然后將生成的簽名與客戶端傳過來的簽名做比較,相同的話就證明請求數(shù)據(jù)沒有被人改動過。

但是這邊有個問題,瀏覽器上面的 Js 代碼能容易被查看到,即使加密也很容易破解,我們的算法和私鑰都很容易泄漏。如果是安卓或者IOS程序,亦或是2個后臺服務(wù)的通信,這種情況算法用戶是看不到,但是軟件開發(fā)是一個團隊協(xié)作的工作,一般負(fù)責(zé)的開發(fā)人員都知道,可靠性就沒辦法太高。相比,Https 的簽名算法是公開的,他生成的簽名算法還會用公鑰去加密。同樣,如果 Http 也要整這么麻煩也是可以的,只是需要在自己的業(yè)務(wù)邏輯中去實現(xiàn),而 Https 借助的是安全套接字層,對應(yīng)用層完全透明,我們的應(yīng)用不需要多做什么就可以實現(xiàn)可靠性傳輸了。

2. HTTPS

Https 是一種通過計算機網(wǎng)絡(luò)進行安全通信的傳輸協(xié)議,經(jīng)由 Http 進行通信,利用 SSL/TLS 建立安全信道,加密數(shù)據(jù)包。Https 使用的主要目的是提供對網(wǎng)站服務(wù)器的身份認(rèn)證,同時保護交換數(shù)據(jù)的隱私與完整性。Http 服務(wù)的默認(rèn)端口是 80,Https 服務(wù)的默認(rèn)端口是 443。

HTTP + SSL = HTTPS = HTTP + 身份認(rèn)證 + 數(shù)據(jù)私密 + 數(shù)據(jù)完整性

2.1 SSL

Https 并不是新的一種協(xié)議,它是 Http 協(xié)議的基礎(chǔ)上面封裝了一層 SSL(Secure Socket Layer),Https 底層跟 Http 一樣是經(jīng)由 TCP 通信的。

SSL

SSL 并不是 Http 特有的,所有應(yīng)用層協(xié)議都可以使用 SSL 進行安全通信。

2.2 加密算法

對稱加密算法

加密和解密的秘鑰使用的是同一個

優(yōu)點
加密速度快,計算量小。
缺點
通信前雙方需要協(xié)商好密鑰,密鑰在網(wǎng)絡(luò)中傳輸不安全。

非對稱加密算法

公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應(yīng)的公開密鑰才能解密。
優(yōu)點:私鑰不對外公開,公鑰可以提前告知對方,密鑰不需要在協(xié)商中傳輸,安全性高。
缺點:加密算法復(fù)雜,效率低。

Https 混合加密算法

Https 結(jié)合了上面兩種加密算法的優(yōu)點,前期通過非對稱加密協(xié)商好對稱加密所需的密鑰(保障了密鑰的安全性),后面通信的時候就拿著這個密鑰采用對稱加密進行通信(保障了計算效率)。

3. 身份認(rèn)證

SSL 不僅提供加密處理,而且還使用了一種用于身份認(rèn)證的證書。證書是由第三方權(quán)威的認(rèn)證機構(gòu)頒發(fā)和維護。服務(wù)端和客戶端通過證書可以證明自己的身份。證書跟域名一樣是需要購買的,因為機構(gòu)不僅僅要頒發(fā)證書給你,還要提供證書的認(rèn)證查詢服務(wù)。(有少部分免費的存在)

大部分的 Web 網(wǎng)站都只要認(rèn)證服務(wù)端即可,當(dāng)我們訪問 https:xxx 開頭的網(wǎng)站,瀏覽器會去 CA 機構(gòu)校驗對方的身份,不符合的就會彈出警告提示,開發(fā)環(huán)境中經(jīng)常證書是自己生成的,所以瀏覽器經(jīng)常會提示警告,我們?nèi)绻麍?zhí)意通過繼續(xù)訪問也是可以的。

少部分的場景需要客戶端和服務(wù)端雙向認(rèn)證,比如一些銀行的網(wǎng)站,我們需要事先插入一個 U盾 之類的東西,往我們的瀏覽器客戶端安裝對應(yīng)的證書。

3.1 證書申請流程

證書的獲得可以通過購買,也可以自己生成,當(dāng)然如果是購買的需要提供域名,營業(yè)執(zhí)照等信息。自己生成同樣需要這些信息,只是自己生成用的信息可以隨意輸入,瀏覽器檢查到信息不符時就是多個安全提醒,你依舊可以選擇直接訪問。我們這邊不太多去講解 SSL 的證書細(xì)節(jié),避免因為細(xì)節(jié)的困惑而迷失全局。

自簽名證書可以借助 SSL 密碼工具 OpenSSL 來生成。

生成 RSA 私鑰和自簽名證書

openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt

req 是證書請求的子命令,-newkey rsa:2048 -keyout private_key.pem 表示生成私鑰(PKCS8格式),-nodes 表示私鑰不加密,若不帶參數(shù)將提示輸入密碼;
-x509表示輸出證書,-days365 為有效期,此后根據(jù)提示輸入證書擁有者信息;

使用 已有RSA 私鑰生成自簽名證書

openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt

-new 指生成證書請求,加上-x509 表示直接輸出證書,-key 指定私鑰文件,其余選項與上述命令相同

3.2 服務(wù)端認(rèn)證

服務(wù)端認(rèn)證
12306 的網(wǎng)站就是一個服務(wù)端認(rèn)證的應(yīng)用,大致的認(rèn)證流程如下:

  1. 瀏覽器向服務(wù)器發(fā)請求 https://www.12306.cn/index
  2. 服務(wù)器將證書和申請證書流程中生成的一對秘鑰中的公鑰發(fā)給瀏覽器
  3. 瀏覽器收到 證書 文件進行分析,然后驗證簽名。
  4. 簽名驗證成功接下來瀏覽器校驗證書申請者的身份。
  5. 一旦服務(wù)器校驗成功,接下來就是進行秘鑰協(xié)商,用非對稱方法協(xié)商出對稱加密所需的私鑰,然后用對稱算法加密通信。

3.3 客戶端認(rèn)證

SSL 客戶端認(rèn)證不會僅依靠證書完成認(rèn)證,一般會 和基于表單認(rèn)證組合形成一種雙因素認(rèn)證(Two-factor authentication)來使用。所謂雙因素認(rèn)證就是指,認(rèn)證過程中不僅需要 密碼這一個因素,還需要申請認(rèn)證者提供其他持有信息,從而作為另一 個因素,與其組合使用的認(rèn)證方式。比如網(wǎng)銀插入USB網(wǎng)盾后還需要輸入密碼。大概了解下就好,不深入了。

4. 小結(jié)

Http 直接跟 TCP 傳輸層交互,而 Https 多了一層 SSL 協(xié)議,正式這個協(xié)議讓 Https 有了數(shù)據(jù)加密、身份認(rèn)證的證書和數(shù)據(jù)完整性保護這些功能。SSL 是獨立于 HTTP 的協(xié)議,所以不光是 HTTP 協(xié)議,其他運行在應(yīng)用層的 SMTP 和 Telnet 等協(xié)議均可配合 SSL 協(xié)議使用??梢哉f SSL 是當(dāng)今世界上應(yīng)用最為廣泛的網(wǎng)絡(luò)安全術(shù)。