交叉证书

简介: ## 证书4要素 pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。 subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。 issuer(颁发者的名字),即上级证书的subject。 signature(签名) ,上级证书使用私钥对当前证书进行签名的值。 ## 证书签名 假设 有 3 级 证书 ![image.png](

证书4要素

pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。
subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。
issuer(颁发者的名字),即上级证书的subject。
signature(签名) ,上级证书使用私钥对当前证书进行签名的值。

证书签名

假设 有 3 级 证书

image.png
首先 ,R1 CA证书 是由 R1证书签发,而www.taobao.com是由R1 CA证书签发。

签发过程核心就是签名,比如 签发R1 CA证书时,拿R1证书的私钥对R1 CA证书进行数字签名操作,签名的值添加在R1 CA证书中。同理签发www.taobao.com这张证书,是用 R1 CA证书的私钥对该证书进行数字签名,签名值添加在www.taobao.com的证书中。

被数字签名的值,是该证书的HASH。举个例子当 使用 R1证书加签R1 CA时,其签名值是 R1_privatekey_sign( HASH(R1 CA) )。

数字证书校验

由于 私钥签名的数据,可以使用公钥校验,假设我们信任R1 + R1 CA证书,我们收到www.taobao.com这个证书,如何校验?

首先,构造证书链,即 拿 server的证书然后和本地(操作系统或者浏览器内置)的可信证书进行上级证书的查找,一般通issuer字段查找(还有通过keyid的方式,这里不讨论),比如 www.taobao.com的证书的issuer是R1 CA,那么在本地仓库里面找R1 CA,接着找R1 CA的上级证书,直到找到最高一级的证书,即R1证书。

第二步,光靠名字来找上级是不够的,因为名字可以伪造,我们还需要对证书的签名值进行校验,我们知道,私钥签名的数据可以使用公钥来校验,所以,首先拿R1 CA证书的的公钥,去解开 www.taobao.com签名值,然后校验其值是否是www.taobao.com的hash,同理可以验证证书链中R1是否是R1 CA的上级证书。 签名校验成功,表明了2点
1:上下级关系正确
2:证书被未篡改,如果证书被篡改,使用上级证书的公钥解开当前证书后,会发现其值和当前证书的HASH值不一样

交叉证书

如果一个CA机构有如下2个受信的链:

image.png

那么又 R1 CA签发的证书只能由R1+R1 CA进行验证;视同 R3 CA签发的证书只能由R3+R3 CA进行签发。

但是有些客户端只有R1和R1 CA而没有R3以及R3 CA,而有些客户端只有R3和R3 CA而没有R1 以及 R1 CA ,我们能不能让证书有2条可以用来验证的链呢? 比如 www.taobao.com->...->R1 是一条证书链, www.taobao.com->...->R3 也算一条证书链,这样假设有些客户端只信任R1或者R3也能同时验证同一个证书。

为了达到这个目的,我们需要做这么一个操作,就是 使用 R1 对 R3进行签名生成一张叫做 R1-R3 的证书(即使用R1的私钥对R3进行签名)。

image.png

注意,R1-R3 拥有和 R3一模一样的 subject+公钥,和R3唯一的区别就是 R3是自签名证书,其issuer是R3自己,而 R1-R3 是中间证书,其issuer是R1。

接着,使用 R1-R3 来对 签发 www.taobao.com ,即 www.taobao.com 的 issuer 是R3(上面说了,issuer就是个字符串,和上级证书的subject一样,而R1-R3 这张证书的subject就是R3),这张 R1-R3 就是所谓的交叉证书corss-certificate

image.png

www.taobao.com 这样的证书,如何能让只信任R1的客户端进行验证:

1、构造证书链
服务器发送 www.taobao.com + R1 R3,客户端构造证书链,自然,通过找 www.taobao.com 的issuer:R3,在server发送的证书中找到了 R1 R3这张证书 ,通过 R1 R3 的issuer:R1,在本地找到了R1。
2、验证证书链
略,通上节一致,通过上级证书的公钥验证当前证书的签名值。

www.taobao.com 这样的证书,如何能让只信任R3的客户端进行验证:

1、构造证书链
服务器发送 www.taobao.com ,客户端构造证书链,自然,通过找 www.taobao.com 的issuer:R3,在本地找到了受信的R3 ,R3是根证书,证书链构造完成。

2、验证证书链
虽然,实际上 www.taobao.com 的证书是由 R1 R3这张证书签名的,但是上面说过,R1 R3这张证书的公钥和R3一样,也就意味着使用R1 R3的公钥,能够验证 www.taobao.com的签名值。

结尾

实际上,使用R1-R3www.taobao.com签名的效果,和使用R3www.taobao.com签名的效果是一模一样的,因为R1-R3R3拥有相同的subject以及公钥,自然拥有相同的私钥。

说的通俗一点,就是CA机构通过欺骗的方式,签了一张交叉证书,这张证书能够让客户端的证书链引导到R1。

交叉证书有什么作用?

1、兼容老设备。假设,老的客户端只支持R1根证书,但是我们的证书是R3是签名的,那需server发送交叉证书,来“引导”客户端使用R1校验。

2、CA机构合并,假设R1 收购了R3,R1为了“收回最终校验权”,可以生成这么一个交叉证书,那么使用R3签名的证书,最后都被R1来校验。

目录
相关文章
|
存储 Prometheus 监控
Prometheus 深度指南:设计理念 · PromQL · Exporter · Thanos
Prometheus 是一款开源的系统监控与报警工具,专为云原生环境设计。它采用拉取模型采集数据,内置高效的本地时序数据库(TSDB),支持丰富的指标类型和四个黄金指标(延迟、流量、错误、饱和度)。其查询语言 PromQL 功能强大,可灵活聚合和分析时间序列数据。此外,通过 Exporter 机制,Prometheus 能轻松扩展到各种系统和服务。针对大规模场景,Thanos 提供高可用解决方案,整合多 Prometheus 实例,实现全局视图和长期存储。整体架构简洁可靠,适用于动态分布式环境。
1749 10
Prometheus 深度指南:设计理念 · PromQL · Exporter · Thanos
|
11月前
|
关系型数据库 OLAP 数据库
免费试用|Vibe Coding正当时,AnalyticDB Supabase极速开发爆款应用
云原生数据仓库AnalyticDB PostgreSQL版重磅推出Supabase托管版本
|
人工智能 IDE 开发工具
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
Trae是字节跳动推出的一款免费的AI集成的开发环境,集成了Claude3.5与GPT-4o等主流AI模型,提供AI问答、智能代码生成、智能代码补全,多模态输入等功能。支持界面全中文化,为中文开发者提供了高效的开发体验
10938 11
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
|
消息中间件 存储 缓存
QPS多少,才算高并发 ?
本文详解高并发概念及 QPS 标准,大厂面试高频点,建议掌握收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
QPS多少,才算高并发 ?
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
1058 9
|
网络协议 Java 测试技术
配置中心原理和选型:Disconf、Apollo、Spring Cloud Config 和 Nacos
学完注册中心,再看配置中心这块,感觉简单很多,因为很多知识原理是相辅相成的
9559 0
配置中心原理和选型:Disconf、Apollo、Spring Cloud Config 和 Nacos
|
安全 小程序 数据建模
SSL OV证书和DV、EV证书的区别
市场上常见的SSL证书有三种:DV(域名验证)、OV(组织验证)和EV(扩展验证)。DV证书仅验证域名,适合个人和小企业,安全性较低;OV证书验证域名和企业身份,广泛用于中型企业,提供更强安全性和企业信息显示;EV证书经过最严格验证,适用于银行等高安全行业,显示绿色地址栏。选择取决于安全需求和预算,个人网站常选DV,中型企业多选OV,大型及高安全场景推荐EV。
|
算法 安全 网络安全
客户端如何验证ssl/tls证书的合法性
客户端是如何验证ssl/tls证书的合法性
1366 1
在Linux中,如何查看某进程所打开的所有文件?
在Linux中,如何查看某进程所打开的所有文件?
|
存储 安全 应用服务中间件
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
946 0