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

首頁(yè) 慕課教程 后端通用面試教程 后端通用面試教程 計(jì)算機(jī)網(wǎng)絡(luò)HTTPS協(xié)議(二)

1. 前言

上一章節(jié)中我們主要就 HTTPS 協(xié)議的前置知識(shí)進(jìn)行介紹,下面會(huì)繼續(xù)介紹 HTTPS 的通信過(guò)程以及拋出一些常見(jiàn)問(wèn)題的探討。因?yàn)楹蜻x人準(zhǔn)備面試的時(shí)間和精力是比較有限的,我們?cè)趯W(xué)習(xí)的過(guò)程要抓住重點(diǎn),如果感覺(jué)對(duì)于細(xì)節(jié)缺乏了解,可以通過(guò)維基百科和查閱 StackOverflow 等方式進(jìn)行自行補(bǔ)充。

2. HTTPS 協(xié)議

2.1 HTTPS 請(qǐng)求流程

面試官提問(wèn): HTTPS 的請(qǐng)求流程和 HTTP 協(xié)議的請(qǐng)求流程有什么區(qū)別?

題目解析:

參考 HTTPS 的官方文檔,我們將整個(gè)請(qǐng)求的流程簡(jiǎn)單抽象為以下幾個(gè)步驟,抓住其中的核心步驟:

圖片描述

(HTTPS 簡(jiǎn)化通信模型)

步驟(1):客戶端發(fā)送一個(gè) HTTPS 請(qǐng)求,例如請(qǐng)求 https://imooc.com,連接到服務(wù)器端的 443 端口(和 HTTP 協(xié)議不同,HTTP 默認(rèn) 80 端口)。

步驟(2):服務(wù)器端收到握手信息,使用預(yù)先配置好的數(shù)字證書(shū),即圖中的公鑰和私鑰。如果是自己頒發(fā)的證書(shū),那么需要客戶端通過(guò)瀏覽器的彈窗驗(yàn)證,如果是組織申請(qǐng)獲得,默認(rèn)直接通過(guò)。

步驟(3):傳輸證書(shū)給客戶端,證書(shū)組裝了多種信息,包含證書(shū)的頒發(fā)機(jī)構(gòu)、證書(shū)有效時(shí)間、服務(wù)器端的公鑰,證書(shū)簽名等。

步驟(4):客戶端解析證書(shū),也就是通過(guò) TLS/SSL 協(xié)議,判定公鑰是否有效,如果發(fā)現(xiàn)異常,會(huì)彈出警告框。如果校驗(yàn)沒(méi)有問(wèn)題,那么客戶端會(huì)生成一個(gè)隨機(jī)數(shù),然后用上一步傳輸過(guò)來(lái)的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密。

步驟(5):客戶端將上個(gè)步驟隨機(jī)數(shù)加密后的內(nèi)容傳輸給服務(wù)器端,這個(gè)隨機(jī)數(shù)就是兩端通信的核心。

步驟(6):服務(wù)器端用自己的私鑰進(jìn)行解密,獲取解密前的隨機(jī)數(shù)。然后組裝會(huì)話秘鑰,這里私鑰和客戶端會(huì)話秘鑰是相同的。

步驟(7):將服務(wù)器端用私鑰加密后的內(nèi)容傳輸給客戶端,在客戶端用之前生成的隨機(jī)數(shù)組裝私鑰還原。

步驟(8):客戶端用之前的私鑰解密獲取的信息,也就獲取了通信內(nèi)容。

上述過(guò)程中,SSL 和 TLS 協(xié)議是核心模塊,具體的證書(shū)交互流程相對(duì)復(fù)雜,面試場(chǎng)景基本不會(huì)涉及。我們需要關(guān)注的是為什么 HTTPS 同時(shí)使用非對(duì)稱加密和對(duì)稱加密,有兩個(gè)原因:

(1)對(duì)稱加密流程兩邊需要使用相同的密鑰,單純使用對(duì)稱加密,無(wú)法實(shí)現(xiàn)密鑰交換。

(2)非對(duì)稱加密:滿足安全要求,但是非對(duì)稱加密的計(jì)算耗時(shí)高于對(duì)稱加密的 2-3 個(gè)數(shù)量級(jí)(相同安全加密級(jí)別),對(duì)于實(shí)際的應(yīng)用場(chǎng)景,例如電商網(wǎng)站,對(duì)網(wǎng)絡(luò)交互高耗時(shí)容忍度是非常低的。所以 HTTPS 才先使用非對(duì)稱交換密鑰,之后再使用對(duì)稱加密通信。

2.2 數(shù)字證書(shū)

面試官提問(wèn): HTTPS 通信過(guò)程涉及到的數(shù)字證書(shū)、簽名是什么概念?

題目解析:

數(shù)字證書(shū)是 CA(Certificate Authority)機(jī)構(gòu)發(fā)布的,作用是標(biāo)記通信雙方的身份。

CA 機(jī)構(gòu)總共頒布了 DV、OV、EV 三種證書(shū),他們的區(qū)別在于可信任程度。

(1)DV 級(jí)別證書(shū):域名級(jí)別可信,證書(shū)中不顯示企業(yè)信息,安全性較差;

(2)OV 級(jí)別證書(shū):企業(yè)驗(yàn)證型證書(shū),目前使用最廣泛的證書(shū);

(3)EV 級(jí)別證書(shū):增強(qiáng)驗(yàn)證型證書(shū),驗(yàn)證最嚴(yán)格的證書(shū),使用者例如 Github 官網(wǎng)。

DV、OV、EV 三種,區(qū)別在于可信程度。DV 是最低的,只是域名級(jí)別的可信,EV 是最高的,經(jīng)過(guò)了法律和審計(jì)的嚴(yán)格核查,可以證明網(wǎng)站擁有者的身份(在瀏覽器地址欄會(huì)顯示出公司的名字,例如 Apple、GitHub 的網(wǎng)站)。不同的信任等級(jí)的機(jī)構(gòu)一起形成了層級(jí)關(guān)系。

再簡(jiǎn)單說(shuō)下數(shù)字簽名,數(shù)字簽名指將通信內(nèi)容和摘要信息(下面例子中的哈希結(jié)果)通過(guò)接收方的公鑰加密,和原文加密結(jié)果一起傳輸給接收方。接收方拿著自己的私鑰解密,判斷摘要結(jié)果和原文結(jié)果是否匹配,數(shù)字簽名的核心目的是為了防止信息丟失、中間人篡改信息。

舉例說(shuō)明,客戶端需要向服務(wù)器端發(fā)送一段字符串:“Hello,World”,我們首先將 "Hello,World" 通過(guò)服務(wù)器端的公鑰進(jìn)行加密得到結(jié)果 A,假設(shè) "Hello,World" 通過(guò)哈希加密算法加密后的結(jié)果是 "abc123",將 "abc123" 使用服務(wù)器端的公鑰進(jìn)行加密得到結(jié)果 B,兩者都發(fā)送給服務(wù)器端。

服務(wù)器端收到信息后,先通過(guò)自己的私鑰對(duì) A 解密,然后再對(duì) B 解密,通過(guò)相同的哈希算法計(jì)算得到 "Hello,World" 的哈希值,如果相同,說(shuō)明數(shù)據(jù)沒(méi)有被中間人篡改。

3. 小結(jié)

本章節(jié)主要介紹了 HTTPS 協(xié)議的核心流程以及數(shù)字證書(shū)的定義,HTTPS 協(xié)議相對(duì)于 HTTP 協(xié)議復(fù)雜很多,所以候選人需要抓住核心矛盾,針對(duì)非對(duì)稱加密和對(duì)稱加密的特點(diǎn),闡述流程中每個(gè)步驟的關(guān)鍵作用,然后再根據(jù)個(gè)人理解補(bǔ)充細(xì)節(jié)。