http、SSL、TLS、https、證書

一、基礎概念

1.HTTP

HTTP (超文本傳輸協議) 是一種用于客戶端和服務器之間傳輸超媒體文檔的應用層協議,是萬維網的基礎。
簡而言之:一種獲取和發送信息的標準協議
在這里插入圖片描述

2.SSL

安全套接字層(SSL)是一種通信協議或一組規則,用于在網絡上的兩個設備或應用程序之間創建安全連接。在通過互聯網共享憑證或數據之前,建立信任并對另一方進行身份驗證非常重要。SSL 是一種技術,您的應用程序或瀏覽器可能使用該技術在任何網絡上創建安全的加密通信通道。
簡而言之:一種用于進行身份驗證的通信協議

3.TLS

TLS 是 SSL 的直接后繼者,所有版本的 SSL 目前均已棄用。但是,使用術語 SSL 來描述 TLS 連接的情況很常見。在大多數情況下,術語 SSL 和 SSL/TLS 都是指 TLS 協議和 TLS 證書。
簡而言之:SSL的升級版

4.HTTPS

HTTPS 是在不安全的 HTTP 連接上建立安全 SSL/TLS 協議
簡而言之:HTTPS = HTTP + SSL/TLS

5.證書

  • 域名證書:域名證書是針對域名注冊的擁有者而言的,它是以電子證書的格式來表現的,標明了注冊域名、域名所有人的中文和英文名稱、域名注冊時間和到期時間等這些內容。
  • SSL證書:SSL證書是數字證書的一種,是遵守SSL協議的,由受信任的數字證書頒發機構(簡稱CA)在驗證服務器身份后頒發,具有服務器身份驗證和數據傳輸加密的功能。
    簡而言之:域名證書用于證明域名的歸屬權。SSL證書用于保護網站的數據傳輸安全。(域名證書是 SSL 證書的基礎)

二、思考

1.HTTP和HTTPS比較

1.1 HTTP在傳輸時候是明文傳輸,很容易被他人惡意攔截獲取篡改(中間人攻擊)

在這里插入圖片描述

1.2 https則通過加密手段保證數據的安全。相應的因為在http基礎上每次傳輸都會涉及加密和解密,對應消耗的資源和時耗會增加。

1.3 如果確認服務所在的環境很安全(內網)或者涉及的都是非隱私性數據,則采用http會更好;如果涉及隱私數據則采用https會更好

2.HTTPS具體如何確保數據安全的

  • 簡而言之就是使用SSL/TLS加密協議對HTTP通訊協議傳輸的內容進行加密/解密,即使中途傳輸內容被人截獲了,其獲得的也只是加密后的內容,保證了數據安全。
  • 上面說了SSL,其實SSL就是TLS的前身,下文涉及這里的就統一就稱為TLS了。

2.1 TLS的對稱加密

  • TLS的核心內容就是對稱加密。對稱加密就是客戶端跟服務端協商好一個對話密鑰(預主密鑰),每次發送/接收消息都用對話密鑰對內容進行加密/解密
    在這里插入圖片描述
    如圖,
    a.客戶端和服務端先進行一次會話(Client Hello,Server Hello),協商會話密鑰的生成算法和協議版本
    b.然后客戶側根據協商好的內容生成會話密鑰(預主密鑰)并發送給服務端【這一步注意存在隱患,后面會展開講】
    c.再之后客戶端和服務端就可以使用會話密鑰進行正常對稱加密交互了

2.2 TLS的非對稱加密

在上面講TLS的對稱加密流程中存在一個隱患點(流程b),就是客戶端在傳輸生成的會話密鑰(預主密鑰)時,如果這期間被黑客截獲,那他就也可以用會話密鑰對后序傳輸的所有內容進行加/解密,先前的所有操作都白搭了。
ps:這里可能會有人問既然a步驟時已經協商好了加密方法和版本,為啥雙方直接各自根據協商好的加密方法和版本直接都本地生成會話密鑰,就不需要再去傳輸會話密鑰了
首先,如果采取這種形式的話,那黑客直接就在最開始直接截取協商的加密算法和版本號就可以了,黑客也在本地生成對應的會話密鑰去加/解密后序的交互內容
其次,其實在Client Hello,生成密鑰的過程中客戶端會生成倆隨機數a、c,Server Hello過程中服務側會生成隨機數b,在生成會話密鑰時夾雜這三個隨機數進行生成。這樣即使黑客知道協商的加密算法和版本也無法計算出最終的會話密鑰

回歸正題,TLS這里就是通過非對成加密來優化傳輸會話密鑰中泄漏的風險

2.2.1非對稱加密

非對稱加密的核心內容就是使用公/私鑰,內容用公鑰加密,只有私鑰才能解密出來。私鑰自己保留,公鑰放開給任何人,別人用公鑰對內容加密,自己用私鑰進行解密。
在這里插入圖片描述

2.2.2 非對成加密實際在TLS中的應用

在這里插入圖片描述
a. 服務端在最開始協商版本和加密方法是把公鑰也發送給客戶端
b. 客戶生成會話密鑰后用公鑰再加密一道,然后發送給服務端
c. 服務端收到被公鑰加密過的會話密鑰,用私鑰進行解密獲取原始的會話密鑰
d. 后序客戶端跟服務端就可以用會話密鑰進行交互了
在這個過程中客戶端跟服務端并沒有傳輸過會話密鑰,所以即使黑客截獲到被會話密鑰加密的內容,也無法解密到真實數據

3.TLS過程存在的風險

上面講了TLS的對成加密+非對稱加密的全過程,但是這其中還是有一個風險點。公/私密鑰對任何人都可以創建,如果過程中黑客將傳輸的公鑰替換成自己創建的公鑰,那后序的操作也就都白費了
在這里插入圖片描述
如圖,假設黑客從一開始就介入,類似中間商黃牛一樣。

  • 面向客戶端裝成服務端,提供給服務端自己的公鑰y,用自己的私鑰y對客戶端發送來的“公鑰y加密過的會話密鑰”進行解密原始會話密鑰
  • 面向服務端裝成客戶端,拿到服務端的公鑰x,將從客戶端解密到的“原始會話密鑰”用公鑰x進行加密再發送給服務端
  • 這樣客戶端、黑客、服務端最終手上的會話密鑰就是一致的了,后序的交互過程就如下
    • 客戶端數據加密 -> 黑客解密拿到真實數據 -> 黑客使用會話密鑰對原始數據/篡改數據加密 -> 服務端解密到黑客發來的原始數據/篡改數據
    • 服務端數據加密 -> 黑客解密拿到真實數據 -> 黑客使用會話密鑰對原始數據/篡改數據加密 -> 客戶端解密到黑客發來的原始數據/篡改數據

4.優化TLS過程中的風險–證書

簡而言之,為了優化上面的風險,服務端不要直接傳輸公鑰給客戶端。而是替換為有公證力的證書傳輸給服務端。服務端可以根據證書解析拿到公鑰,同時證書也能證明該公鑰是沒有被人掉包/篡改過的

4.1 證書介紹

證書包含如下內容

  • Issued To:證書的申請者,即服務側申請證書時登記自己的身份信息
  • Issued By:證書的頒發者,有公證力的組織
  • Validity Period:證書的有效期信息
  • SHA-256 Fingerprints:證書的指紋信息和登記的公鑰
    • 指紋碼:證書的唯一標識(保證證書的完整性)。被Hash加密過
      在這里插入圖片描述
      服務側拿到證書需要確保兩個事情才能信任證書
      1.證書的完整性:證書在傳輸過程中是否被人截獲修改篡改過?比如證書被黑客攔截,對里面的內容進行了修改(數據篡改)
      2.證書的可信性:證書雖然是完整的,但不知道這個證書是否為客戶端發送的被公證過滴證書?比如真正的證書a被黑客攔截,黑客再給服務端換成自己生成的證書b發送過去(證書調包)
      這兩種情況分別需要使用證書指紋、數字簽名來驗證

4.2 證書指紋

指紋碼:證書的唯一標識(保證證書的完整性)。被Hash加密過

  • hash加密不可逆且具有唯一性,即無法根據加密后的內容反解析出初始內容,不同的初始內容加密后不可能得到相同的加密串。那么服務側對原始內容hash后進行比對,如果不一致則代表當前證書中途被人篡改過內容

4.3 數字簽名

用于驗證證書身份的真實性

  • 我們之前都是對內容公鑰加密,私鑰解密。數字簽名這里相反,會把內容進行私鑰加密,公鑰解密
  • 權威機構CA頒發證書時候,會用私鑰對證書加密,然后頒發出去。服務端拿到加密證書后,再用公鑰解密證書,獲取證書信息。如果解密成功,說明手上的公鑰和證書加密使用的私鑰為一對,即說明該加密證書確實為權威機構所頒發的那個證書
  • 電腦一般安裝的系統/瀏覽器內都自帶有由權威機構頒發的證書驗證公鑰,即不需要從網絡上傳遞公鑰,也就不存在證書公鑰被泄漏的風險
    ps:思考題:全網那么多域名需要申請證書,又有那么多權威CA機構。總不能在系統和瀏覽器里都預裝所有證書驗證公鑰吧?
    a.CA機構也是分級的,瀏覽器和系統只需要預裝根CA機構的公鑰;
    b.用根CA公鑰解密中間CA的【A類證書】(這里的證書指的是 根CA 頒發給 中間CA 驗證 中間CA機構權威性 的證書);
    c.然后從A類證書里拿到下一級證書的公鑰(這里的下一級如果是更次級的中間CA,則類推繼續到下一級,直到拿到驗證服務端域名的【B類證書】),

    在這里插入圖片描述

4.4 TLS完整過程

在這里插入圖片描述

ps:學習參考(bilibili:Zzlock、技術蛋老師)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87630.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在 C++ 中,判斷 `std::string` 是否為空字符串

在 C 中&#xff0c;判斷 std::string 是否為空字符串有多種方法&#xff0c;以下是最常用的幾種方式及其區別&#xff1a; 1. 使用 empty() 方法&#xff08;推薦&#xff09; #include <string>std::string s; if (s.empty()) {// s 是空字符串 }特性&#xff1a; 時間…

【Harmony】鴻蒙企業應用詳解

【HarmonyOS】鴻蒙企業應用詳解 一、前言 1、應用類型定義速覽&#xff1a; HarmonyOS目前針對應用分為三種類型&#xff1a;普通應用&#xff0c;游戲應用&#xff0c;企業應用。 而企業應用又分為&#xff0c;企業普通應用和設備管理應用MDM&#xff08;Mobile Device Man…

Linux云計算基礎篇(8)

VIM 高級特性插入模式按 i 進入插入模式。按 o 在當前行下方插入空行并進入插入模式。按 O 在當前行上方插入空行并進入插入模式。命令模式:set nu 顯示行號。:set nonu 取消顯示行號。:100 光標跳轉到第 100 行。G 光標跳轉到文件最后一行。gg 光標跳轉到文件第一行。30G 跳轉…

Linux進程單例模式運行

Linux進程單例模式運行 #include <iostream> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int write_pid(const cha…

【Web 后端】部署服務到服務器

文章目錄 前言一、如何啟動服務二、掛載和開機啟動服務1. 配置systemctl 服務2. 創建server用戶3. 啟動服務 總結 前言 如果你的后端服務寫好了如果部署到你的服務器呢&#xff0c;本次通過fastapi寫的服務實例&#xff0c;示范如何部署到服務器&#xff0c;并做服務管理。 一…

國產MCU學習Day5——CW32F030C8T6:窗口看門狗功能全解析

每日更新教程&#xff0c;評論區答疑解惑&#xff0c;小白也能變大神&#xff01;" 目錄 一.窗口看門狗&#xff08;WWDG&#xff09;簡介 二.窗口看門狗寄存器列表 三.窗口看門狗復位案例 一.窗口看門狗&#xff08;WWDG&#xff09;簡介 CW32F030C8T6 內部集成窗口看…

2025年文件加密軟件分享:守護數字世界的核心防線

在數字化時代&#xff0c;數據已成為個人與企業的寶貴資產&#xff0c;文件加密軟件通過復雜的算法&#xff0c;確保信息在存儲、傳輸與共享過程中的保密性、完整性與可用性。一、文件加密軟件的核心原理文件加密軟件算法以其高效性與安全性廣泛應用&#xff0c;通過對文件數據…

node.js下載教程

1.項目環境文檔 語雀 2.nvm安裝教程與nvm常見命令,超詳細!-阿里云開發者社區 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解決問題)在一個項目,跳轉到外部html頁面,頁面布局

問題描述目前&#xff0c;ERP后臺有很多跳轉外部鏈接的地方&#xff0c;會直接打開一個tab顯示。因為有些頁面是適配手機屏幕顯示&#xff0c;放在瀏覽器會超級大。不美觀&#xff0c;因此提出優化。修改前&#xff1a;修改后&#xff1a;思考過程1、先看下代碼&#xff1a;log…

網絡通信協議與虛擬網絡技術相關整理(上)

#作者&#xff1a;程宏斌 文章目錄 tcp協議udp協議arp協議icmp協議dhcp協議BGP協議OSPF協議BGP vs OSPF 對比表VLAN&#xff08;Virtual LAN&#xff09;VXLAN&#xff08;Virtual Extensible LAN&#xff09;IPIP&#xff08;IP-in-IP&#xff09;vxlan/vlan/ipip網橋/veth網…

物聯網軟件層面的核心技術體系

物聯網軟件層面的核心技術體系 物聯網(IoT)軟件技術棧是一個多層次的復雜體系&#xff0c;涵蓋從設備端到云平臺的完整解決方案。以下是物聯網軟件層面的關鍵技術分類及詳細說明&#xff1a; 一、設備端軟件技術 1. 嵌入式操作系統 實時操作系統(RTOS)&#xff1a; FreeRTO…

GreatSQL通過偽裝從庫回放Binlog文件

GreatSQL通過偽裝從庫回放Binlog文件 一、適用場景說明 1、主庫誤操作恢復 利用 Binlog 在其他實例解析、回放&#xff0c;根據gtid只回放到指定位點。 2、網絡隔離環境同步 備份恢復后可以拉去主庫Binlog文件至新實例同步增量數據。 3、備份恢復遇到Binlog文件過大處理 恢復實…

MVC 架構設計模式

在現代軟件開發中&#xff0c;架構設計決定了一個項目的可維護性與可擴展性。MVC&#xff08;Model-View-Controller&#xff09;作為經典的分層設計模式&#xff0c;廣泛應用于 Web 系統、前端應用乃至移動端開發中。本文不僅介紹 MVC 的核心思想和機制&#xff0c;還將結合具…

(18)python+playwright自動化測試鼠標拖拽-上

1.簡介 本文主要介紹兩個在測試過程中可能會用到的功能&#xff1a;在selenium中介紹了Actions類中的拖拽操作和Actions類中的劃取字段操作。例如&#xff1a;需要在一堆log字符中隨機劃取一段文字&#xff0c;然后右鍵選擇摘取功能。playwright同樣可以實現元素的拖拽和釋放的…

Android 網絡全棧攻略(四)—— TCPIP 協議族與 HTTPS 協議

Android 網絡全棧攻略系列文章&#xff1a; Android 網絡全棧攻略&#xff08;一&#xff09;—— HTTP 協議基礎 Android 網絡全棧攻略&#xff08;二&#xff09;—— 編碼、加密、哈希、序列化與字符集 Android 網絡全棧攻略&#xff08;三&#xff09;—— 登錄與授權 Andr…

Python爬蟲實戰:從零構建完整項目(數據采集+存儲+異常處理)

Python爬蟲實戰&#xff1a;從零構建完整項目&#xff08;數據采集存儲異常處理&#xff09; 爬蟲不是簡單的請求解析&#xff0c;而是一個系統工程。本文將帶你體驗企業級爬蟲開發的核心流程。 一、前言&#xff1a;為什么需要完整的爬蟲項目&#xff1f; 作為初學者&#xf…

大數據時代UI前端的用戶體驗設計新思維:以用戶為中心的數據可視化

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;大數據重構用戶體驗設計的底層邏輯在數據爆炸式增長的今天&#xff0c;用…

FreeRTOS 中任務控制塊(Task Control Block,TCB)用于管理和描述任務的核心數據結構

在 FreeRTOS 中&#xff0c;任務控制塊&#xff08;Task Control Block&#xff0c;TCB&#xff09;是用于管理和描述任務的核心數據結構。每個任務都有一個對應的 TCB&#xff0c;它包含了任務的所有相關信息。 TCB 的主要功能 存儲任務狀態信息&#xff1a;TCB 中包含了任務…

前端-HTML-day1

目錄 1、標簽語法 2、HTML基本骨架 3、標簽的關系 4、注釋 5、標題標簽 6、段落標簽 7、換行和水平線標簽 8、文本格式化標簽 9、圖像標簽-基本使用 10、圖像標簽-屬性 11、相對路徑 12、絕對路徑 13、超鏈接 14、音頻 15、視頻 16、綜合案例1--個人簡介 17、…

OpenCV篇——項目(二)OCR文檔掃描

目錄 文檔掃描項目說明 前言 文檔掃描代碼總體演示 OCR文檔識別代碼總體演示: ?編輯 代碼功能詳解 1. 預處理階段 2. 邊緣檢測 3. 輪廓處理 4. 透視變換 5. 后處理 主要改進說明&#xff1a; 使用建議&#xff1a; 文檔掃描項目說明 前言 本項目實現了一個自動…