SSL/TLS 證書與數字簽名:構建互聯網信任的詳解

在浩瀚的數字世界中,信任是安全通信的基石。當我們通過瀏覽器訪問一個 HTTPS 網站、進行在線支付,或者下載一個重要的軟件更新時,我們如何能確信自己正在與合法的、未被仿冒的對方進行交互?我們又如何能保證傳輸的數據沒有被中途竊聽或篡改?這一切的安全保障,很大程度上依賴于 SSL/TLS 證書及其背后的數字簽名技術。

一、數字簽名 (Digital Signature):不可偽造的"數字印章"

在理解 SSL/TLS 證書之前,我們首先需要了解什么是數字簽名,因為它是證書可信度的核心保障。

數字簽名是一種基于非對稱加密技術的加密機制,用于驗證數字信息(如文件、消息、證書等)的三個關鍵特性

  1. 真實性/身份認證 (Authenticity):確認信息確實是由聲稱的簽名者(發送者)簽發的,而不是其他人偽造的。簽名者的身份與其私鑰綁定。
  2. 完整性 (Integrity):確認信息在從簽名到驗證的整個過程中沒有被任何形式地篡改過。哪怕只修改了一個比特,簽名驗證也會失敗。
  3. 不可否認性 (Non-repudiation):簽名者不能否認他們曾經對某條信息進行過簽名。一旦簽名,就留下了不可磨滅的"數字痕跡"。

數字簽名的生成過程:

  1. 哈希 (Hashing):簽名者首先對要簽名的原始數字信息(我們稱之為"消息")使用一個安全的哈希函數(如 SHA-256)計算出一個固定長度的、唯一的哈希值(也叫消息摘要)。
  2. 加密哈希值 (Signing):簽名者使用自己的私鑰對這個哈希值進行加密。這個加密后的哈希值就是數字簽名
  3. 附加或分離:數字簽名可以附加到原始消息的末尾一起發送,也可以與原始消息分開傳輸。

數字簽名的驗證過程:

  1. 獲取公鑰和消息:驗證者需要獲取簽名者的公鑰以及據稱由該簽名者簽名的原始消息和數字簽名。
  2. 解密簽名:驗證者使用簽名者的公鑰對數字簽名進行解密,得到一個哈希值(我們稱之為 哈希值A)。如果解密失敗(例如,公鑰與簽名私鑰不匹配),則簽名無效。
  3. 計算消息哈希:驗證者對收到的原始消息使用與簽名者相同的哈希函數,獨立計算出一個新的哈希值(我們稱之為 哈希值B)。
  4. 比較哈希值:驗證者比較 哈希值A 和 哈希值B。
    • 如果兩者完全相同:則簽名驗證通過。這意味著:
      • 消息確實是由該公鑰對應的私鑰持有者簽名的(真實性)。
      • 消息在傳輸過程中沒有被篡改(完整性)。
    • 如果兩者不同:則簽名驗證失敗。說明消息可能被篡改,或者簽名并非由聲稱的簽名者生成。

二、SSL/TLS 證書:網站的"數字身份證"

SSL/TLS 證書(通常簡稱為 SSL 證書,盡管 TLS 是更現代和安全的協議)是一個由受信任的第三方機構——證書頒發機構 (Certificate Authority, CA)——簽發的數字文件。它就像是網站服務器的一個官方認證的"數字身份證"。

SSL/TLS 證書的主要作用:

  1. 服務器身份認證 (Server Authentication):向瀏覽器(客戶端)證明它所連接的網站服務器確實是其聲稱的那個合法服務器(例如,www.google.com 的證書能證明你連接的是 Google 的官方服務器),而不是一個由攻擊者搭建的仿冒網站(釣魚網站)。這是防止中間人攻擊 (MITM) 的關鍵一步。
  2. 啟用加密通信 (HTTPS):證書中包含一個公鑰。在 SSL/TLS 握手過程中,瀏覽器會使用這個公鑰來加密一個用于生成后續對稱加密會話密鑰的關鍵信息(如 Pre-Master Secret)。只有持有對應私鑰的服務器才能解密它,從而安全地協商出用于加密實際應用數據的對稱密鑰。

SSL/TLS 證書包含哪些關鍵信息?

一個典型的 SSL/TLS 證書(通常遵循 X.509 標準)包含以下主要信息:

  • 證書持有者信息 (Subject)
    • 通用名稱 (Common Name, CN):通常是證書所頒發給的網站域名(例如 www.example.com)。瀏覽器會檢查這個 CN 是否與用戶正在訪問的域名匹配。
    • 組織 (Organization, O)、組織單位 (Organizational Unit, OU)、城市 (Locality, L)、州/省 (State/Province, ST)、國家 (Country, C) 等標識信息。
  • 證書持有者的公鑰 (Subject's Public Key Info):這是證書的核心內容之一,包含了網站服務器的公鑰及其所使用的公鑰算法(如 RSA, ECC)。
  • 證書頒發機構信息 (Issuer):簽發該證書的 CA 的詳細信息(如 CA 的名稱、國家等)。
  • CA 的數字簽名 (Issuer's Digital Signature):這是整個證書可信度的關鍵!CA 使用自己的私鑰對證書中上述所有信息(的哈希摘要)進行數字簽名。瀏覽器通過驗證這個簽名來確認證書的真實性和完整性。
  • 證書有效期 (Validity Period):證書的"生效日期"(Not Before) 和"失效日期"(Not After)。證書只在其有效期內才被認為是有效的。
  • 證書序列號 (Serial Number):由 CA 分配的唯一標識此證書的編號。
  • 簽名算法 (Signature Algorithm):CA 在對證書進行簽名時所使用的哈希算法和公鑰加密算法(例如 sha256WithRSAEncryption)。
  • 密鑰用途 (Key Usage):指定證書中公鑰的預期用途(例如,數字簽名、密鑰加密、證書簽名等)。
  • 擴展密鑰用途 (Extended Key Usage):更具體地指定公鑰的用途(例如,服務器身份認證 TLS Web Server Authentication,客戶端身份認證 TLS Web Client Authentication)。
  • (可選) 主題備用名稱 (Subject Alternative Name, SAN):一個非常重要的擴展字段,允許一個證書包含多個域名或 IP 地址。例如,一個證書可以同時保護 example.com, www.example.com, blog.example.com
  • (可選) CRL 分發點 (CRL Distribution Points, CDP):指向證書吊銷列表 (Certificate Revocation List, CRL) 的 URL。CRL 是一個由 CA 發布的列表,包含了已被吊銷(在有效期內但不再可信)的證書序列號。
  • (可選) AIA (Authority Information Access):包含如何獲取簽發者證書的信息,通常指向 CA 中間證書的 URL,用于構建證書鏈。

三、證書鏈 (Certificate Chain) 與信任錨 (Trust Anchor)

我們如何信任一個網站的 SSL/TLS 證書呢?難道我們要認識并信任每一個簽發證書的 CA 嗎?顯然不現實。

這里的信任關系是通過一個證書鏈 (Certificate Chain / Chain of Trust) 來建立的,并最終依賴于操作系統或瀏覽器中預置的根證書 (Root Certificates),這些根證書構成了信任錨 (Trust Anchor)

證書鏈的工作方式:

  1. 服務器證書 (Server Certificate / Leaf Certificate / End-entity Certificate):這是直接頒發給網站服務器的證書。
  2. 中間證書 (Intermediate Certificate(s)):服務器證書通常不是由根 CA 直接簽發的,而是由一個或多個中間 CA 簽發的。每個中間證書都會被其上一級的 CA(另一個中間 CA 或根 CA)簽名。
  3. 根證書 (Root Certificate):證書鏈的頂端是根 CA 的證書。根證書是自簽名的(即由根 CA 自己用自己的私鑰簽名)。這些根 CA 是全球公認的、經過嚴格審計和高度可信的機構(如 DigiCert, Let's Encrypt ISRG Root, GlobalSign 等)。

當瀏覽器收到一個服務器證書時,它會嘗試構建并驗證整個證書鏈,直到一個它所信任的根證書為止:

  • 瀏覽器使用服務器證書中"頒發者"字段的信息,去查找對應的中間 CA 證書(服務器通常會將其證書鏈中的中間證書一并發送給瀏覽器,或者瀏覽器通過證書中的 AIA 信息去下載)。
  • 然后,瀏覽器用這個中間 CA 證書中的公鑰,去驗證服務器證書上的簽名。
  • 接著,瀏覽器再用這個中間 CA 證書中"頒發者"字段的信息,去查找它的上一級 CA 證書,并用上一級 CA 的公鑰驗證當前中間 CA 證書的簽名。
  • 這個過程一直持續,直到鏈的末端是一個預裝在瀏覽器或操作系統信任庫中的根 CA 證書。
  • 瀏覽器會用其本地存儲的該根 CA 的公鑰來驗證這個根證書(或其下一級證書)的簽名。由于根證書是預置且受信任的,如果整個鏈條上的所有簽名都驗證通過,并且每個證書都符合有效期、域名匹配等其他檢查,那么瀏覽器就認為服務器證書是可信的。

如果證書鏈中任何一個環節的簽名驗證失敗,或者鏈無法最終追溯到一個受信任的根證書,瀏覽器就會發出安全警告,提示用戶連接可能不安全。

四、證書吊銷 (Certificate Revocation)

僅僅檢查證書是否在有效期內是不夠的。在某些情況下(例如,服務器的私鑰泄露、證書信息錯誤、CA 操作失誤等),一個尚未過期的證書也可能需要被提前宣布為無效,即吊銷 (Revoke)

瀏覽器需要檢查證書是否已被吊銷。主要有兩種機制:

  1. 證書吊銷列表 (Certificate Revocation List, CRL)

    • CA 定期發布一個包含所有已被吊銷證書序列號的列表 (CRL)。
    • 瀏覽器可以下載并檢查 CRL,看目標證書是否在列表中。
    • 缺點:CRL 文件可能很大,下載和更新可能不及時,導致在吊銷信息傳播的延遲期內,被吊銷的證書仍可能被錯誤地信任。
  2. 在線證書狀態協議 (Online Certificate Status Protocol, OCSP)

    • 瀏覽器可以直接向 CA(或其指定的 OCSP 響應服務器)發送一個實時查詢請求,詢問特定證書的當前狀態(有效、已吊銷或未知)。
    • 優點:提供更及時的吊銷狀態信息。
    • 缺點
      • OCSP Stapling (OCSP 封套):為解決上述問題,OCSP Stapling 允許網站服務器定期從 CA 獲取其證書的 OCSP 響應,并在 TLS 握手時將其"附帶" (staple) 在證書旁邊一起發送給瀏覽器。這樣瀏覽器就無需自己再去查詢 CA,提高了效率和隱私性。

五、總結:信任的基石,安全的保障

SSL/TLS 證書和數字簽名是現代互聯網安全的核心組成部分。它們通過一套精密的密碼學機制和公鑰基礎設施 (PKI),為我們在不安全的網絡環境中建立起了一條可信任的通信鏈路。

  • 數字簽名確保了證書內容的真實性和完整性,是 CA 對其所簽發證書的"信譽背書"。
  • SSL/TLS 證書作為網站的"數字身份證",向用戶證明了網站的身份,并提供了用于加密通信的公鑰。
  • 證書鏈和根信任庫將對單個證書的信任傳遞到對少數幾個根 CA 的信任。
  • 證書吊銷機制確保了即使證書被錯誤簽發或私鑰泄露,也能及時使其失效。

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

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

相關文章

近日部署跑通的若干多模態模型總結與論文概述

CLIP模型概述與落地測試 CLIP模型全稱是Contrastive Language-Image Pretraining??(對比語言圖像預訓練)。是OpenAI于2021年提出的多模態預訓練模型,通過對比學習對齊圖像和文本的表示,實現零樣本(zero-shot&#x…

Web3 初學者的第一個實戰項目:留言上鏈 DApp

目錄 📌 項目簡介:留言上鏈 DApp(MessageBoard DApp) 🧠 技術棧 🔶 1. Solidity 智能合約代碼(MessageBoard.sol) 🔷 2. 前端代碼(index.html script.js…

LeetCode 270:在二叉搜索樹中尋找最接近的值(Swift 實戰解析)

文章目錄 摘要描述題解答案題解代碼分析示例測試及結果時間復雜度空間復雜度總結 摘要 在日常開發中,我們經常需要在一組有序的數據中快速找到最接近某個目標值的元素。LeetCode 第 270 題“Closest Binary Search Tree Value”正是這樣一個問題。本文將深入解析該…

Kotlin高階函數多態場景條件判斷與子邏輯

Kotlin高階函數多態場景條件判斷與子邏輯 fun main() {var somefun: (Int, Float) -> Longval a 4val b 5fsomefun multi()//if 某條件println(somefun.invoke(a, b))//if 某條件somefun add()println(somefun.invoke(a, b)) }fun multi(): (Int, Float) -> Long {re…

嵌入式學習--江協51單片機day4

昨天周五沒有學習,因為中午沒有睡覺,下午和晚上擠不出整塊的時間。周日有考試今天也沒有學很多啊,但以后周末會是學一天,另一天休息和寫周總結。 今天學了串口通信和LED點陣屏,硬件原理是真的很迷,一但想搞…

Spring Cloud 以Gateway實現限流(自定義返回內容)

前言 Spring Cloud Gateway自帶RequestRateLimiterGatewayFilterFactory限流方案,可基于Redis和RedisRateLimiter實現默認算法為令牌桶的請求限流。作為自帶的該限流方案,其可與Spring生態的其它各項組件無縫集成,并且自身實現也相對完善/好用…

容器填充函數fill和memset對比總結

文章目錄 1、fill() 按元素填充2、memset() 按字節填充3、對比 1、fill() 按元素填充 用于將容器或數組的指定范圍內的元素賦值為指定值&#xff08;按元素類型填充&#xff09;。屬于 C STL 算法&#xff08;<algorithm> 頭文件&#xff09;。 // 從起始地址到結束地址…

【Linux實踐系列】:進程間通信:萬字詳解共享內存實現通信

&#x1f525; 本文專欄&#xff1a;Linux Linux實踐項目 &#x1f338;作者主頁&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客勵志語錄&#xff1a; 人生就像一場馬拉松&#xff0c;重要的不是起點&#xff0c;而是堅持到終點的勇氣 ★★★ 本文前置知識&#xff1a; …

CogView4 文本生成圖像

CogView4 文本生成圖像 flyfish 基于 CogView4Pipeline 的圖像生成程序&#xff0c;其主要目的是依據 JSON 文件里的文本提示信息來生成圖像&#xff0c;并且把生成的圖像保存到指定文件夾。 JSON 文件格式 [{"prompt": "your first prompt"},{"pr…

路由重發布

路由重發布 實驗目標&#xff1a; 掌握路由重發布的配置方法和技巧&#xff1b; 掌握通過路由重發布方式實現網絡的連通性&#xff1b; 熟悉route-pt路由器的使用方法&#xff1b; 實驗背景&#xff1a;假設學校的某個分區需要配置簡單的rip協議路由信息&#xff0c;而主校…

機器人領域和心理學領域 恐怖谷 是什么

機器人領域和心理學領域 恐怖谷 是什么 恐怖谷是一個在機器人領域和心理學領域備受關注的概念,由日本機器人專家森政弘于1970年提出。 含義 當機器人與人類的相似度達到一定程度時,人類對它們的情感反應會突然從積極變為消極,產生一種毛骨悚然、厭惡恐懼的感覺。這種情感…

Go-GJSON 組件,解鎖 JSON 讀取新姿勢

現在的通義靈碼不但全面支持 Qwen3&#xff0c;還支持配置自己的 MCP 工具&#xff0c;還沒體驗過的小伙伴&#xff0c;馬上配置起來啦~ https://click.aliyun.com/m/1000403618/ 在 Go 語言開發領域&#xff0c;json 數據處理是極為常見的任務。Go 標準庫提供了 encoding/jso…

數據分析_數據預處理

1 數據預處理流程 ①數據清洗:處理數據缺失、數據重復、數據異常等問題,提升數據質量. ②數據轉換:涵蓋基本數據轉換、語義數據轉換、衍生數據轉換和隱私數據轉換,適配分析需求. ③數據集成:整合多源數據. 2 數據清洗 2.1 數據缺失 2.1.1 數值型數據缺失 數值型列的部分數值不…

vue +xlsx+exceljs 導出excel文檔

實現功能&#xff1a;分標題行導出數據過多&#xff0c;一個sheet表里表格條數有限制&#xff0c;需要分sheet顯示。 步驟1:安裝插件包 npm install exceljs npm install xlsx 步驟2&#xff1a;引用包 import XLSX from xlsx; import ExcelJS from exceljs; 步驟3&am…

ThinkPad T440P如何從U盤安裝Ubuntu24.04系統

首先制作一個安裝 U 盤。我使用的工具是 Rufus &#xff0c;它的官網是 rufus.ie &#xff0c;去下載最新版就可以了。直接打開這個工具&#xff0c;選擇自己從ubuntu官網下載Get Ubuntu | Download | Ubuntu的iso鏡像制作U盤安裝包即可。 其次安裝之前&#xff0c;還要對 Thi…

第十七次博客打卡

今天學習的內容是動態規劃算法。 動態規劃算法&#xff08;Dynamic Programming&#xff0c;簡稱 DP&#xff09;是一種通過將復雜問題分解為更小的子問題來求解的算法思想。它主要用于解決具有重疊子問題和最優子結構特性的問題。 一、動態規劃的基本概念 1. 最優子結構 一個復…

視覺革命來襲!ComfyUI-LTXVideo 讓視頻創作更高效

探索LTX-Video 支持的ComfyUI 在數字化視頻創作領域&#xff0c;視頻制作效果的提升對創作者來說無疑是一項重要的突破。LTX-Video支持的ComfyUI便是這樣一款提供自定義節點的工具集&#xff0c;它專為改善視頻質量、提升生成速度而開發。接下來&#xff0c;我們將詳細介紹其功…

Java版ERP管理系統源碼(springboot+VUE+Uniapp)

ERP系統是企業資源計劃&#xff08;Enterprise Resource Planning&#xff09;系統的縮寫&#xff0c;它是一種集成的軟件解決方案&#xff0c;用于協調和管理企業內各種關鍵業務流程和功能&#xff0c;如財務、供應鏈、生產、人力資源等。它的目標是幫助企業實現資源的高效利用…

CenOS7切換使用界面

永久切換 在開始修改之前&#xff0c;我們首先需要查看當前的啟動模式。可以通過以下命令來實現&#xff1a; systemctl get-default執行此命令后&#xff0c;系統會返回當前的默認啟動模式&#xff0c;例如graphical.target表示當前默認啟動為圖形界面模式。 獲取root權限&…

Dify使用總結

最近完成了一個Dify的項目簡單進行總結下搭建服務按照官方文檔操作就行就不寫了。 進入首頁之后由以下組成&#xff1a; 探索、工作室、知識庫、工具 探索&#xff1a; 可以展示自己創建的所有應用&#xff0c;一個應用就是一個APP&#xff0c;可以進行測試使用 工作室包含…