详解 HTTPS之 TLS 证书信任链

相信大家在学习计算机网络的过程中都会接触到 HTTP 和 HTTPS,TLS四次握手的环节也被频繁地提及。但大部分文章对第三次握手:客户端验证服务器提供的证书并提取公钥只是一笔带过,但实际上验证服务器证书是否合法也是很复杂的,其中就要经过 TLS 版本链的验证。这篇文章就要详细解析这个问题。

数字证书与CA

CA = Certificate Authority,证书颁发机构

它是受信任的第三方机构,负责:

  • 验证网站 / 机构 / 个人的真实身份
  • 用自己的私钥签发数字证书
  • 维护证书的合法性、有效期、吊销状态

数字证书 = 身份证(网络世界的)

一份标准证书里主要包含:

  • 持有者公钥
  • 持有者域名 / 组织 / 个人信息
  • 有效期
  • 签发它的 CA 信息
  • CA 用私钥做的数字签名(保证没被篡改)

一句话:数字证书 = 公钥 + 身份信息 + CA 的签名

证书链

信任链是根证书 → 中间证书 → 终端证书的层级结构,每一层都由上一层用私钥签名,形成可追溯的信任传递。

层级 名称 角色与作用 存储位置 签发方式
顶端 根证书(Root CA) 信任锚点,整个体系的权威起点;私钥离线、严格保密 操作系统 / 浏览器内置信任库(如 Windows "受信任的根证书颁发机构") 自签名(自己签发自己)
中间 中间证书(Intermediate CA) 根 CA 的授权代理,用于签发终端证书;隔离根 CA 私钥,降低泄露风险 服务器需随终端证书一起发送给客户端 根证书私钥签名签发
底端 终端证书(End-Entity/Server Cert) 直接绑定域名 / 服务器,用于 TLS 握手的身份认证与密钥交换 部署在 Web 服务器(Nginx/Apache 等) 中间证书私钥签名签发

流程

  • 获取证书链 :服务器在 TLS 握手时,返回终端证书 + 所有中间证书(必须完整,否则客户端无法构建到根的路径)。
  • 逐级验证签名
    • 中间证书公钥 验证终端证书的签名 → 确认终端证书由该中间 CA 合法签发。
    • 根证书公钥 (来自本地信任库)验证中间证书的签名 → 确认中间 CA 由受信任根 CA 授权。
  • 信任锚定 :验证追溯到本地预装的根证书 → 信任链成立。
  • 附加有效性检查
    • 证书未过期(检查 Not Before/Not After)。
    • 域名匹配(CN/SAN 与访问域名一致)。
    • 未被吊销(查询 CRL/OCSP)。
    • 签名算法安全(如禁用 SHA-1)。
  • 结果:全部通过 → 连接安全(浏览器显示锁);任一失败则报错

额外疑问

为什么会提示 "证书不受信任"?

  • 证书是自签名
  • 证书由不知名 / 未预装的 CA 签发
  • 证书链不完整(缺中间证书)

自签名证书和 CA 证书区别?

  • 自签名:自己签自己,浏览器不认
  • CA 证书 :由权威机构签发,系统 / 浏览器内置信任

CA 为什么安全?

  • 根 CA 私钥离线保存、极度安全
  • 中间 CA 用来实际签发,隔离风险
  • 浏览器 / OS 只信任极少数根 CA
相关推荐
奥地利落榜美术生灬2 小时前
知识点总结(二)POSIX API 、 tcp/ip网络协议栈、dpdk
网络·网络协议·tcp/ip
卤炖阑尾炎2 小时前
Nginx 安全防护与 HTTPS 部署实战全解析
nginx·安全·https
Yan-英杰3 小时前
远程控制软件哪个安全?2026 ToDesk/向日葵/RayLink加密、隐私与防护全面对比评测
网络·人工智能·网络协议·tcp/ip·http
左左右右左右摇晃3 小时前
HTTP与HTTPS整理
笔记·http·https
爱丽_3 小时前
把 HTTP 讲清楚
网络·网络协议·http
遥遥晚风点点3 小时前
JAVA http请求报错:unable to find valid certification path to requested target
java·网络·网络协议·http
2501_916008894 小时前
移动应用上架到应用商店的完整指南:原理与详细步骤
android·ios·小程序·https·uni-app·iphone·webview
木井巳5 小时前
【网络原理】HTTP协议
java·网络·网络协议·http·fiddler
我不听你讲话5 小时前
Nginx 的安全防护策略与HTTPS 部署
nginx·安全·https