Http证书体系及证书加密流程(通信流程)

一、HTTPS 证书体系:信任的基石

HTTPS 证书体系是保障网络通信安全的核心机制,其本质是一套基于公钥基础设施(PKI,Public Key Infrastructure) 的信任体系,通过数字证书实现通信双方的身份验证和数据加密,确保信息在传输过程中不被篡改、窃取或伪造。

证书体系全景图

  • 根证书极少更新,换根等于“换操作系统”;因此 CA 用中间证书签名,一旦中间私钥泄露,吊销中间证书即可,根证书仍安全。

  • 一张服务器证书里其实会带 1~3 张中间证书,浏览器会自动拼链;如果链拼不齐,就会报 “证书链不完整”。

  1. 核心角色
    • 证书持有者(服务器 / 客户端):通常是网站服务器,需要向权威机构申请证书,以证明自身身份的合法性。证书中包含持有者的公钥、域名、有效期等关键信息。
    • 证书颁发机构(CA,Certificate Authority):公认的权威第三方机构(如 Let’s Encrypt、DigiCert、GlobalSign 等),负责审核证书申请者的身份,并为其颁发经过数字签名的证书。CA 自身拥有根证书(Root Certificate),是整个信任体系的 “根”。
    • 信任链(证书链):由于根证书直接预装在操作系统或浏览器中(如 Windows、macOS、Chrome 等),具有最高信任级别,而 CA 通常不会直接用根证书签名用户证书(避免根证书泄露风险),而是通过 “中间证书(Intermediate Certificate)” 层级签名。最终形成 “根证书→中间证书→用户证书” 的信任链,浏览器通过验证链条的完整性确认证书有效性。
    • 证书吊销列表(CRL,Certificate Revocation List) 与在线证书状态协议(OCSP,Online Certificate Status Protocol):当证书因私钥泄露、域名变更等原因失效时,CA 会将其列入 CRL 或通过 OCSP 标记为吊销,浏览器在验证证书时会检查状态,避免使用无效证书。
    • 把证书当成“电子身份证”:名字、照片、有效期、发证机关、防伪水印,一个都不能少。

  • Subject 里不仅放域名,还会放组织名(OV/EV 证书),浏览器地址栏的小锁→点击“证书”即可查看。

  • Signature 是 CA 用自己的私钥给证书全文做的哈希签名,浏览器用 CA 公钥验证哈希值一致即“未被篡改”。

  1. 证书的核心内容
    一份标准的 X.509 格式数字证书包含:
    • 证书持有者信息(如域名、组织名称、国家 / 地区等);
    • 证书持有者的公钥(用于加密传输对称密钥);
    • 颁发机构(CA)的信息;
    • CA 对证书的数字签名(用 CA 的私钥加密,可通过 CA 公钥验证,确保证书未被篡改);
    • 证书的有效期(起始时间和截止时间,过期后需重新申请);
    • 证书序列号(唯一标识,用于查询状态)等。
  2. 证书的类型
    • 域名验证型(DV,Domain Validated):仅验证域名所有权(如通过邮箱或 DNS 解析记录),审核简单, issuance 快,适合个人网站或小型应用,仅显示域名信息。
    • 组织验证型(OV,Organization Validated):除验证域名外,还需审核组织的合法性(如营业执照、地址等),证书中包含组织名称,可信度更高,适合企业网站。
    • 扩展验证型(EV,Extended Validation):最高级别验证,需通过严格的法律、运营、物理地址等多重审核,浏览器地址栏会显示绿色锁标及组织名称(如银行、电商平台),安全性和可信度最强。

二、HTTPS 证书加密流程(通信流程):从握手到加密传输

HTTPS 的通信安全依赖于SSL/TLS 协议(SSL 是 TLS 的前身,目前主流为 TLS 1.2/1.3),其核心是通过 “非对称加密” 协商对称密钥,再用 “对称加密” 传输数据,同时通过证书实现身份验证。完整流程可分为TCP 三次握手SSL/TLS 握手两部分,其中 SSL/TLS 握手是证书发挥作用的核心阶段。

1. 前置:TCP 三次握手

HTTPS 基于 TCP 协议,通信前需先完成 TCP 连接建立:

  • 客户端向服务器发送 “SYN” 报文,请求建立连接;
  • 服务器回复 “SYN+ACK” 报文,确认请求并发起自身连接请求;
  • 客户端回复 “ACK” 报文,确认服务器的请求,TCP 连接建立。
2. SSL/TLS 握手:证书与密钥的 “安全协商”

以 TLS 1.2 为例(TLS 1.3 流程更简化,减少交互步骤),握手过程需客户端与服务器交换信息,完成身份验证、密钥协商,最终生成用于加密数据的 “会话密钥”。

  • 步骤 1:客户端 Hello(Client Hello)
    客户端向服务器发送信息,包括:

    • 支持的 SSL/TLS 版本(如 TLS 1.2);
    • 支持的加密套件列表(如 ECDHE-RSA-AES256-GCM-SHA384,包含密钥交换算法、对称加密算法、哈希算法);
    • 客户端生成的随机数(Client Random),用于后续密钥计算;
    • 会话 ID(若复用之前的会话,可省略部分步骤)。
  • 步骤 2:服务器 Hello(Server Hello)
    服务器收到客户端请求后,选择双方都支持的配置并回复:

    • 确认使用的 SSL/TLS 版本和加密套件(如选中 ECDHE-RSA-AES256-GCM-SHA384);
    • 服务器生成的随机数(Server Random),与客户端随机数共同用于密钥计算;
    • 会话 ID(同客户端,或新建会话)。
  • 步骤 3:服务器发送证书(Certificate)
    服务器将自身的数字证书(包含公钥、域名、有效期、CA 签名等)发送给客户端。若证书由中间 CA 颁发,还需附带中间证书,形成完整的信任链。

  • 步骤 4:客户端验证证书合法性
    客户端收到证书后,需通过以下步骤验证证书有效性(核心环节):

    1. 检查证书格式与完整性:验证证书是否符合 X.509 标准,是否被篡改(通过 CA 的数字签名,用 CA 公钥解密签名后与证书哈希值比对,一致则未篡改)。
    2. 验证信任链:从服务器证书向上追溯,通过中间证书最终验证到根证书(根证书预装在客户端,默认可信),若链条断裂(如中间证书缺失或无效),则证书不被信任。
    3. 检查证书有效期:确认证书当前时间在 “起始时间” 和 “截止时间” 之间,过期证书无效。
    4. 验证域名匹配:证书中记录的域名需与当前访问的域名一致(或符合通配符规则,如 *.example.com匹配a.example.com),否则视为 “域名不匹配”,浏览器提示风险。
    5. 检查证书吊销状态:通过 CRL 或 OCSP 查询证书是否被吊销(如私钥泄露后 CA 会吊销证书),若已吊销则拒绝信任。

    若以上验证均通过,客户端确认服务器身份合法;若验证失败,浏览器会弹出警告(如 “证书无效”“连接不安全”),用户可选择是否继续(存在风险)。

  • 步骤 5:客户端生成预主密钥(Pre-Master Secret)并加密传输
    客户端生成一个随机数(Pre-Master Secret),用服务器证书中的公钥(非对称加密) 加密后发送给服务器。由于只有服务器拥有对应的私钥,因此只有服务器能解密得到 Pre-Master Secret(防止第三方窃取)。

  • 步骤 6:双方计算会话密钥(Master Secret)
    客户端和服务器分别使用之前交换的 Client Random、Server Random,以及解密得到的 Pre-Master Secret,通过相同的算法(如 PRF 函数)计算出会话密钥(对称密钥)。此时双方拥有相同的会话密钥,后续通信将使用该密钥进行对称加密(效率更高)。

  • 步骤 7:客户端与服务器确认加密通信就绪

    • 客户端发送 “Change Cipher Spec” 报文,告知服务器后续数据将用会话密钥加密;
    • 客户端发送 “Finished” 报文(用会话密钥加密),包含之前握手信息的哈希值,供服务器验证。
    • 服务器接收后,同样发送 “Change Cipher Spec” 和 “Finished” 报文(用会话密钥加密),客户端验证通过后,SSL/TLS 握手完成。
3. 加密数据传输

握手完成后,客户端与服务器进入加密通信阶段:

  • 所有数据通过会话密钥(对称加密,如 AES) 加密后传输,第三方即使截获数据,因没有会话密钥也无法解密。
  • 同时,通过哈希算法(如 SHA)对数据进行完整性校验,确保传输过程中数据未被篡改(若篡改,哈希值不匹配,接收方会拒绝)。
4. 会话结束

通信完成后,双方通过 “Close Notify” 报文结束会话,会话密钥失效(若后续重连,可通过会话 ID 复用部分握手步骤,提高效率)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90931.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分布式架构】学习路径概述:了解分布式系统的核心问题、解决方案与实战说明

文章目录零、前言一、分布式系统理论1、 分布式系统的一致性问题1.1、一致性问题理论(CAP/BASE)1.2、 一致性协议与算法(Paxos/Raft):选主、分布式锁1.3、 分布式事务(2PC\3PC\TCC):服务一致性保障与性能2、…

C# 密封类_密封方法 (seadled 关键字)

C#允许将类声明为密封类,密封类不能被继承在什么场景用?答:防止重写某些类导致代码混乱密封类seadled 声明密封类的关键字//seadled 声明密封类的关键字 //密封类不能被继承 sealed class Class1 {public int age;public string name;publi…

深度学习(鱼书)day04--手写数字识别项目实战

深度学习(鱼书)day04–手写数字识别项目实战 鱼书的相关源代码下载: 点击链接:http://www.ituring.com.cn/book/1921 点击“随书下载” 第三项就是源代码: 解压后,在pycharm(或其它IDE&#…

【自用】NLP算法面经(6)

一、FlashAttention 1、Tile-Based计算 将q,k,v分块为小块,每次仅处理一小块: 利用gpu的片上SRAM完成QK^T和softmax避免中间结果写入HBM 标准attention的计算算法如下:标准attention实现大量中间结果需要频繁访问HBM,而HBM的访问速…

Vue页面卡顿优化:从理论到实战的全面解释

目录 1. 理解Vue页面卡顿的幕后黑手 1.1 响应式系统的“双刃剑” 1.2 虚拟DOM的“隐藏成本” 1.3 浏览器渲染的“性能陷阱” 实战案例:一个“罪魁祸首”的排查 2. 优化响应式系统:让数据“轻装上阵” 2.1 使用v-if和v-show控制渲染 2.2 冻结静态数据 2.3 精细化响应式…

从0开始学linux韦东山教程Linux驱动入门实验班(6)

本人从0开始学习linux,使用的是韦东山的教程,在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。本人将前几章的内容大致学完之后,考虑到后续驱动方面得更多的开始实操,后续的内容将以韦东山教程Linux驱动入门实…

高性能反向代理与负载均衡 HAProxy 与 Nginx

在现代高并发 Web 架构中,HAProxy 和 Nginx 是两个非常重要的工具。它们在反向代理、负载均衡、SSL 终止、缓存、限流等方面发挥着关键作用。 一、HAProxy 与 Nginx 简介 1. HAProxy 简介 HAProxy(High Availability Proxy) 是一个使用 C …

AI安全“面壁计划”:我们如何对抗算法时代的“智子”封锁?

> 在算法窥视一切的今天,人类需要一场数字世界的“面壁计划” 2025年,某医院部署的AI分诊系统被发现存在严重偏见:当输入相同症状时,系统为白人患者分配急诊通道的概率是黑人患者的**1.7倍**。调查发现,训练数据中少数族裔样本不足**15%**,导致AI在“认知”上形成了结…

数据库数据恢复—报错“system01.dbf需要更多的恢复来保持一致性”的Oracle数据恢复案例

Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。Oracle数据库恢复流程: 1、…

Spring Cloud Gateway 服务网关

Spring Cloud Gateway是 Spring Cloud 生态系统中的一个 API 网关服务,用于替换由Zuul开发的网关服务,基于Spring 5.0Spring Boot 2.0WebFlux等技术开发,提供了网关的基本功能,例如安全、监控、埋点和限流等,旨在为微服…

[数据结构]#6 树

树是一种非线性的数据结构,它由节点组成,并且这些节点之间通过边连接。树的每个节点可以有一个或多个子节点,并且有一个特殊的节点叫做根节点(没有父节点)。树在计算机科学中应用广泛,尤其是在数据库索引、…

车辆网络安全规定之R155与ISO/SAE 21434

随着科技的不断进步,车辆已经从传统的机械装置演变为高度智能化的移动终端。现代汽车不仅配备了先进的驾驶辅助系统(ADAS)、车载信息娱乐系统(IVI),还具备联网功能,能够实现远程诊断、自动驾驶、…

Go语言实战案例-合并多个文本文件为一个

以下是《Go语言100个实战案例》中的 文件与IO操作篇 - 案例21:合并多个文本文件为一个 的完整内容,适用于初学者学习文件读取与写入的综合运用。🎯 案例目标使用 Go 语言将指定目录下的多个 .txt 文件,合并成一个新的总文件。&…

基坑渗压数据不准?选对渗压计能实现自动化精准监测吗?

一、渗压监测的背景 渗压计是一种专门用于测量构筑物内部孔隙水压力或渗透压力的传感器,适用于长期埋设在水工结构物或其它混凝土结构物及土体内,以测量结构物或土体内部的渗透(孔隙)水压力。 在水利工程中,大坝、水库…

Linux网络:阿里云轻量级应用服务器配置防火墙模板开放端口

1.问题介绍在使用Udp协议或其他协议进行两台主机或同一台主机通信时,常常会出现bind成功,但是在客户端向服务端发送数据后,服务端无响应的情况,如果使用轻量级应用服务器,大概率是服务器的端口因为防火墙未对公网IP开放…

《 Spring Boot整合多数据源:分库业务的标准做法》

🚀 Spring Boot整合多数据源:分库业务的标准做法 文章目录🚀 Spring Boot整合多数据源:分库业务的标准做法🔍 一、为什么需要多数据源支持?💡 典型业务场景⚙️ 二、多数据源集成方案对比&#…

前端ApplePay支付-H5全流程实战指南

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档前言近期公司开展关于苹果支付的相关业务,与之前不同的是,以前后台直接获取第三方Wallet封装好的接口获取支付地址,H5页面直接跳转使用Appl…

Flink窗口:解锁流计算的秘密武器

Flink 窗口初识在大数据的世界里,数据源源不断地产生,形成了所谓的 “无限数据流”。想象一下,网络流量监控中,每一秒都有海量的数据包在网络中穿梭,这些数据构成了一个无始无终的流。对于这样的无限数据流&#xff0c…

Java排序算法之<希尔排序>

目录 1、希尔排序介绍 1.1、定义 1.2、核心思想 2、希尔排序的流程 第 1 轮:gap 4 第 2 轮:gap 2 第 3 轮:gap 1 3、希尔排序的实现 4、时间复杂度分析 5、希尔排序的优缺点 6、适用场景 前言 希尔排序(Shell Sort&…

c++加载qml文件

这里展示了c加载qml文件的三种方式以及qml文件中根节点的访问准备在创建工程的初期,遇到了一个问题,cmake文件以前都是系统自动生成的,不需要我做过多的操作修改,但是,加载qml的程序主函数是需要用到QGuiApplication&a…