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

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

1. 前言

上一章節(jié)中我們主要就 HTTPS 協(xié)議的前置知識進行介紹,下面會繼續(xù)介紹 HTTPS 的通信過程以及拋出一些常見問題的探討。因為候選人準備面試的時間和精力是比較有限的,我們在學習的過程要抓住重點,如果感覺對于細節(jié)缺乏了解,可以通過維基百科和查閱 StackOverflow 等方式進行自行補充。

2. HTTPS 協(xié)議

2.1 HTTPS 請求流程

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

題目解析:

參考 HTTPS 的官方文檔,我們將整個請求的流程簡單抽象為以下幾個步驟,抓住其中的核心步驟:

圖片描述

(HTTPS 簡化通信模型)

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

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

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

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

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

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

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

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

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

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

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

2.2 數(shù)字證書

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

題目解析:

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

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

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

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

(3)EV 級別證書:增強驗證型證書,驗證最嚴格的證書,使用者例如 Github 官網(wǎng)。

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

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

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

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

3. 小結(jié)

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