当前位置: 首页 > news >正文

HTTPS如何保障安全?详解证书体系与加密通信流程

HTTP协议本身是明文传输的,安全性较低,因此现代互联网普遍采用 HTTPS(HTTP over TLS/SSL) 来实现加密通信。HTTPS的核心是 TLS/SSL证书体系加密通信流程

一、HTTPS 证书体系

HTTPS依赖 公钥基础设施(PKI, Public Key Infrastructure)数字证书 来验证服务器身份并建立安全连接。

1. 数字证书的作用

  • 身份认证:证明服务器是合法的(如 example.com 的拥有者)。
  • 密钥交换:用于协商加密通信的密钥。
  • 数据完整性:防止数据被篡改。

2. 证书的组成

字段

说明

域名(CN/SAN)

证书绑定的域名(如 example.com),支持多域名(SAN扩展)。

公钥

服务器的公钥,用于加密数据或验证签名。

颁发者(CA)

签发证书的证书颁发机构(如 Let's Encrypt、DigiCert)。

有效期

证书的生效和过期时间(通常1年~2年)。

签名算法

用于验证证书的算法(如 SHA-256 + RSA)。

数字签名

CA对证书的哈希值用私钥加密后的结果,用于验证证书真实性。

3. 证书类型

类型

特点

DV(域名验证)

仅验证域名所有权,适合个人网站(如 Let's Encrypt)。

OV(组织验证)

验证企业身份,适合企业网站(如银行、政府机构)。

EV(扩展验证)

严格验证企业身份,浏览器地址栏显示公司名称(已逐渐被弃用)。

4. 证书链(Chain of Trust)

HTTPS证书采用层级信任模型:

  1. 根证书(Root CA)
  • 由受信任的根证书颁发机构(如 DigiCert、GlobalSign)管理。
  • 预装在操作系统/浏览器中(如 Windows Trusted Root Store)。
  1. 中间证书(Intermediate CA)
  • 由根CA签发,用于实际颁发终端证书(避免根CA私钥直接暴露)。
  1. 终端证书(End-Entity Certificate)
  • 最终提供给网站的证书(如 example.com)。

验证流程
浏览器检查证书签名链是否可追溯到受信任的根CA。

二、HTTPS 加密通信流程(TLS握手)

HTTPS 的加密通信分为两大阶段:握手阶段 和数据传输阶段

1. 客户端发起请求(ClientHello)

  • 浏览器访问 https://example.com,发送:
    • 支持的TLS版本(如 TLS 1.3)。
    • 支持的加密套件(如 AES256-GCM-SHA384)。
    • 随机数(Client Random)。

2. 服务器响应(ServerHello)

  • 服务器返回:
    • 选择的TLS版本和加密套件。
    • 随机数(Server Random)。
    • 数字证书(包含公钥)。
    • (可选)要求客户端证书(双向认证,罕见)。

3. 客户端验证证书

  • 浏览器检查:
  1. 证书是否由受信任的CA签发。
  2. 证书是否在有效期内。
  3. 证书绑定的域名是否匹配当前访问的域名。
  4. 证书是否被吊销(通过OCSP或CRL)。

4. 密钥交换(Key Exchange)

  • TLS 1.2及之前
    客户端生成 Pre-Master Secret,用服务器公钥加密后发送。
  • TLS 1.3(简化)
    直接通过 DH(Diffie-Hellman) 算法协商密钥,无需加密传输。

5. 生成会话密钥

  • 客户端和服务器使用:
    • Client Random + Server Random + Pre-Master Secret
      • → 生成 Master Secret
      • → 派生 会话密钥(Session Key)(用于对称加密通信)。

6. 加密通信开始

  • 客户端发送数据:用会话密钥加密→服务器用会话密钥解密。
  • 服务器返回数据:用会话密钥加密→客户端用会话密钥解密。
http://www.dtcms.com/a/296409.html

相关文章:

  • AI 在金融:重塑金融服务的智能革命
  • 《小白学习产品经理》第十章:方法论之MVP
  • Windows 下配置 GPU 用于深度学习(PyTorch)的完整流程
  • 让复杂 AI 应用构建就像搭积木:Spring AI Alibaba Graph 使用指南与源码解读
  • 测试学习之——Pytest Day5
  • 关闭 Chrome 浏览器后,自动删除浏览历史记录
  • 3.7 综合挑战项目
  • C语言(长期更新)第5讲:数组练习(三)
  • 跑步有氧训练
  • MegaTTS3 使用
  • Elasticsearch 的聚合(Aggregations)操作详解
  • Mysql窗口函数
  • 数据库垂直拆分和水平拆分
  • 面经 - 车载多媒体系统
  • 【已解决】YOLO11模型转wts时报错:PytorchStreamReader failed reading zip archive
  • PyTorch数据选取与索引详解:从入门到高效实践
  • es 和 lucene 的区别
  • 【REACT18.x】CRA+TS+ANTD5.X实现useImperativeHandle让父组件修改子组件的数据
  • R study notes[1]
  • linux入门 相关linux系统操作命令(二)--文件管理系统 ubuntu22.04
  • 二分查找-153-寻找旋转排序数组中的最小值-力扣(LeetCode)
  • unordered_map和unordered_set特性以及解决哈希冲突
  • Gemini拿下IMO2025金牌的提示词解析
  • Redis Lua脚本语法详解
  • Redis ①⑦-分布式锁
  • 跨模态理解的基石:非文本内容向量化方法全景解析
  • Lua协同程序(coroutine)
  • leetcode100.相同的树(递归练习题)
  • Xilinx-FPGA-PCIe-XDMA 驱动内核兼容性问题修复方案
  • 基于单片机睡眠质量/睡眠枕头设计