SSL/TLS

http + ssl傳輸層 -> https
安全套接層

SSL/TLS

  • 1、核心角色與文件
  • 2、證書生成流程
    • 2.1、生成CA根證書
    • 2.2、生成服務端證書
    • 2.3 生成客戶端證書(雙向認證)
  • 3、SSL/TLS 認證模式
    • 3.1、單向認證(默認 HTTPS)
    • 3.2、雙向認證(mTLS)
  • 4、認證關鍵點
  • 5、對稱數據加密
    • 算法協商過程

1、核心角色與文件

文件作用歸屬方
ca.keyCA 根私鑰,用于簽發證書證書頒發機構 (CA)
ca.crtCA 根證書,用于驗證簽發證書的合法性客戶端/服務端
server.key服務端私鑰,用于 SSL 握手簽名服務端
server.crt服務端證書(由 CA 簽發),包含公鑰+身份信息服務端
client.key客戶端私鑰(雙向認證時使用)客戶端
client.crt客戶端證書(由 CA 簽發)客戶端

2、證書生成流程

2.1、生成CA根證書

	# 生成 CA 私鑰openssl genrsa -out ca.key 2048# 生成 CA 自簽名根證書openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/CN=MyRootCA"

2.2、生成服務端證書

服務端證書 (server.crt) 必須由客戶端信任的 CA(即 ca.crt)簽發。

	# 生成服務端私鑰openssl genrsa -out server.key 2048# 生成證書請求文件 (CSR)openssl req -new -key server.key -out server.csr -subj "/CN=www.example.com"# 用 CA 簽發證書openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365

2.3 生成客戶端證書(雙向認證)

雙向認證時,客戶端證書 (client.crt) 必須由服務端信任的 CA 簽發(通常也是 ca.crt)。

	# 生成客戶端私鑰openssl genrsa -out client.key 2048# 生成證書請求openssl req -new -key client.key -out client.csr -subj "/CN=ClientUser"# 用 CA 簽發證書openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365

3、SSL/TLS 認證模式

證書驗證本質是校驗簽發鏈是否通向信任的 CA。

3.1、單向認證(默認 HTTPS)

  • 流程:

    • 1、客戶端驗證服務端證書:
      • 校驗 server.crt是否由 ca.crt簽發。
      • 驗證域名、有效期等。
    • 2、服務端不驗證客戶端身份。
  • 配置:

    • 服務端 nginx
    	# Nginx 配置示例# 自身認證ssl_certificate      server.crt;# 加密數據ssl_certificate_key  server.key;
    
    • 客戶端
      • 需預裝 ca.crt(否則瀏覽器會提示證書不受信)

3.2、雙向認證(mTLS)

  • 雙向認證需要雙方都配置信任鏈和證書。

  • 流程:
    1、客戶端驗證服務端證書(同單向認證)。
    2、服務端驗證客戶端證書:

    • 校驗 client.crt 是否由 ca.crt 簽發。
    • 可選校驗客戶端證書的擴展字段(如用途)。
  • 配置:
    1、服務端 nginx

    	ssl_verify_client on;          # 開啟客戶端驗證ssl_client_certificate ca.crt; # 信任的 CA 證書
    

    2、客戶端

    • 請求時需攜帶 client.crt 和 client.key。
    	curl --cert client.crt --key client.key https://www.example.com
    

4、認證關鍵點

  • 非對稱加密僅用于身份認證和密鑰交換
    服務端用 server.key 對握手消息簽名,客戶端用 server.crt 中的公鑰驗證簽名。
    雙方協商出對稱密鑰(如 AES),后續通信使用對稱加密。
  • 數據加密由對稱密鑰完成,非對稱加密不直接加密業務數據。

5、對稱數據加密

算法協商過程

  1. ClientHello:客戶端發送支持的密碼套件列表
  2. ServerHello:服務器從客戶端支持的列表中選擇一個雙方都支持的密碼套件
  3. 密鑰交換:通過非對稱加密(RSA、ECSHE)協商出預主密鑰(Pre-Master
    Secret),最終生成會話密鑰(Session Key).
    • 特性:
      • 密鑰保密性:
        • 會話密鑰動態生成:每次 TLS連接都會生成唯一的會話密鑰,僅在內存中存在,不會通過網絡傳輸。
        • 密鑰交換安全性:
          非對稱加密(RSA、ECDHE)保護預主密鑰的傳輸。
          前向保密(Prefect Forward Secrecy,PFS):使用ECDHE等算法時,每次會話的臨時密鑰在連接結束后銷毀,即使服務器私鑰泄露,歷史會話也無法解密。
      • 加密算法的強度:
        • AES安全性:AES是 NIST認證的對稱加密算法,目前無已知有效攻擊手段。
        • 加密模式優化:現代 TLS適用 AES-GCM等認證加密模式,同時保證機密性和完整性。
      • 協議防護機制:
        • 防重放攻擊:通過隨機數和序列號確保數據包不被重復使用
        • 完整性校驗:HMAC或 AEAD(如 GCM)防止數據被篡改

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

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

相關文章

HTML 音頻(Audio)學習筆記

一、HTML 音頻概述 在 HTML 中&#xff0c;音頻可以通過多種方式播放&#xff0c;但要確保音頻在不同瀏覽器和設備上都能正常播放&#xff0c;需要掌握一些技巧。HTML5 引入了 <audio> 元素&#xff0c;為音頻播放提供了一種標準方法&#xff0c;但在 HTML4 中&#xff…

php開發rest api,哪個框架最好

在 2025 年&#xff0c;選擇適合開發 REST API 的 PHP 框架需要根據項目需求、性能要求和團隊技術棧進行權衡。以下是一些推薦的 PHP 框架及其適用場景&#xff1a; 1. Laravel 特點&#xff1a;功能豐富&#xff0c;生態系統強大&#xff0c;內置 API 資源&#xff0c;支持 …

前端入門之CSS

CSS: HTML負責定義頁面結構;JS負責處理頁面邏輯和點擊事件;CSS負責用于描述 HTML 元素的顯示方式,通過 CSS 可以控制顏色、字體、布局等。 核心語法: 選擇器: 類選擇器主要用于選中需要添加樣式的 HTML 元素。主要分為:類選擇器(.class-name { ... })、標簽選擇器(…

MCP協議的Streamable HTTP:革新數據傳輸的未來

引言 在數字化時代&#xff0c;數據傳輸的效率和穩定性是推動技術進步的關鍵。MCP&#xff08;Model Context Protocol&#xff09;作為AI生態系統中的重要一環&#xff0c;通過引入Streamable HTTP傳輸機制&#xff0c;為數據交互帶來了革命性的變化。本文將深入解讀MCP協議的…

MySQL - 索引原理與優化:深入解析B+Tree與高效查詢策略

文章目錄 引言一、BTree索引核心原理1.1 索引數據結構演化1.2 BTree的存儲結構通過主鍵查詢&#xff08;主鍵索引&#xff09;商品數據的過程通過非主鍵&#xff08;輔助索引&#xff09;查詢商品數據的過程 MySQL InnoDB 的索引原理 二、執行計劃深度解析三、索引失效的六大陷…

《K230 從熟悉到...》識別機器碼(AprilTag)

《K230 從熟悉到...》識別機器碼&#xff08;aprirltag&#xff09; tag id 《廬山派 K230 從熟悉到...》 識別機器碼&#xff08;AprilTag&#xff09; AprilTag是一種基于二維碼的視覺標記系統&#xff0c;最早是由麻省理工學院&#xff08;MIT&#xff09;在2008年開發的。A…

Linux驅動復習

應用層調用內核層函數稱為系統調用 1.硬件設備管理 1&#xff0c;字符設備驅動&#xff08;一個一個字節&#xff09;——芯片內部外設 &#xff1a;WDT,Timer&#xff0c;adc,iic&#xff0c;SPI,R,UART,LCD,CAMERA,USB,Keyboard&#xff0c;Mouse 2&#xff0c;塊設備驅動&a…

【FAQ】HarmonyOS SDK 閉源開放能力 —Account Kit(3)

1.問題描述&#xff1a; PC場景&#xff0c;青少年模式系統API不支持嗎&#xff1f; 解決方案&#xff1a; PC場景&#xff0c;青少年模式系統API不支持&#xff0c;另外文檔上的幾個API也不支持。 2.問題描述&#xff1a; 華為一鍵登錄 Beta7本地運行到手機可以拿到匿名手…

【gdutthesis模板】論文標題太長導致換頁問題解決

標題太長導致換頁問題解決方案如下&#xff1a; 調小下方數值即可

SAP學習筆記 - 豆知識18 - (TODO)Msg 番號 ME154 構成品目無法決定

1&#xff0c;現象 構成品目の決定は不可能です Msg 番號 ME154 構成品目無法決定 2&#xff0c;到Deepseek里找一下解決方案 SAP ME21N中錯誤「組件物料的確定不可行&#xff08;ME154&#xff09;」的解決步驟 此錯誤在創建分包采購訂單時出現&#xff0c;通常由于系統無…

10.多線程

預備知識 預備知識一 預備知識二 預備知識三 如何理解進程和線程的關系&#xff0c;舉一個生活中的例子 家庭&#xff1a;進程家庭成員&#xff1a;線程 每個家庭成員都會為這個家庭做貢獻&#xff0c;只不過大家都在做不同的事情&#xff08;比如&#xff1a;我們在上學&…

Python入門(8):文件

1. 文件基本概念 文件&#xff1a;存儲在計算機上的數據集合&#xff0c;Python 通過文件對象來操作文件。 文件類型&#xff1a; 文本文件&#xff1a;由字符組成&#xff0c;如 .txt, .py 二進制文件&#xff1a;由字節組成&#xff0c;如 .jpg, .mp3 2. 文件打開與關閉…

市場交易策略優化與波動管理

市場交易策略優化與波動管理 在市場交易中&#xff0c;策略的優化和波動的管理至關重要。市場價格的變化受多種因素影響&#xff0c;交易者需要根據市場環境動態調整策略&#xff0c;以提高交易的穩定性&#xff0c;并有效規避市場風險。 一、市場交易策略的優化方法 趨勢交易策…

HTTP數據傳輸的幾個關鍵字Header

本文著重針對http在傳輸數據時的幾種封裝方式進行描述。 1. Content-Type(描述body內容類型以及字符編碼) HTTP的Content-Type用于定義數據傳輸的媒體類型&#xff08;MIME類型&#xff09;&#xff0c;主要分為以下幾類&#xff1a; (一)、?基礎文本類型? text/plain? …

面向教育領域的實時更新RAG系統:核心模塊設計與技術選型實踐指南

目錄 面向教育領域的實時更新RAG系統&#xff1a;核心模塊設計與技術選型實踐指南 一、業務需求分析 二、系統架構設計&#xff08;核心模塊&#xff09; 三、核心模塊詳解與技術選型建議 &#xff08;一&#xff09;實時更新向量知識庫 &#xff08;二&#xff09;教材與…

k8s patch方法更新deployment和replace方法更新deployment的區別是什么

在Kubernetes中&#xff0c;patch 和 replace 方法用于更新資源&#xff08;如 Deployment&#xff09;&#xff0c;但它們的實現方式和適用場景有顯著差異。以下是兩者的核心區別&#xff1a; 1. 更新范圍 replace 方法 完全替換整個資源配置。需要用戶提供完整的資源定義&…

解決安卓手機WebView無法直接預覽PDF的問題(使用PDF.js方案)

在移動端開發中&#xff0c;通過 webview 組件直接加載PDF文件時&#xff0c;不同平臺的表現差異較大&#xff1a; iOS & 部分安卓瀏覽器&#xff1a;可正常內嵌預覽&#xff08;依賴系統內置PDF渲染能力&#xff09; 大多數安卓設備&#xff1a;由于缺乏原生PDF插件&…

基于javaweb的SSM+Maven機房管理系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

7-6 混合類型數據格式化輸入

本題要求編寫程序&#xff0c;順序讀入浮點數1、整數、字符、浮點數2&#xff0c;再按照字符、整數、浮點數1、浮點數2的順序輸出。 輸入格式&#xff1a; 輸入在一行中順序給出浮點數1、整數、字符、浮點數2&#xff0c;其間以1個空格分隔。 輸出格式&#xff1a; 在一行中…

【GPIO8個函數解釋】

函數解釋 void GPIO_DeInit(GPIO_TypeDef* GPIOx); 作用&#xff1a;將指定GPIO端口的所有寄存器恢復為默認值。這會清除之前對該端口的所有配置&#xff0c;使其回到初始狀態。使用方法&#xff1a;傳入要復位的GPIO端口指針&#xff0c;例如GPIOA、GPIOB等。 void GPIO_AF…