SSL协议,根证书为何要保存在客户端

1. 比较好奇,为什么客户端需要保存一个根证书

在SSL中,有客户端,服务器,CA认证中心(一个机构)

先要确定一个基调,客户端是完全信任 CA认证中心。CA认证中心给服务器发了个数字证书,CA认证中心表示信任服务器,那么最终,客户端从服务器下载了数字证书,去找CA认证中心校验(校验,CA认证中心是否信任服务器)。

客服端信任CA认证中心,CA认证中心信任服务器,那么客户端就信任服务器。那么这个就是一条信任链。

2. 以上是基本原理,具体实施起来就复杂一点

客户端认证流程:

(1)服务器生成一对密钥,私钥自己留着,公钥交给数字证书认证中心(CA)
(2)CA进行审核,并用CA自己的私钥对服务器提供的公钥进行签名生成数字证书
(3)在客户端建立连接时,客户端从服务器获取数字证书,用CA的公钥(根证书)对数字证书进行验证,比对一致,说明该数字证书确实是CA颁发的(得此结论有一个前提就是:客户端的CA公钥确实是CA的公钥,即该CA的公钥与CA对服务器提供的公钥进行签名的私钥确实是一对。),而CA又作为权威机构保证该公钥的确是服务器端提供的,从而可以确认该证书中的公钥确实是合法服务器端提供的。
为保证第3步中提到的前提条件,CA的公钥必须要安全地转交给客户端(CA根证书必须先安装在客户端),因此,CA的公钥一般来说由浏览器开发商内置在浏览器的内部。于是,该前提条件在各种信任机制上,基本保证成立。

3. 以上总结起来

CA认证中心有一个根证书,是信任链的起点,就是大家都相信CA认证中心。

客户端从CA认证中心下载这个根证书。

CA认证中心给了服务器一个数字证书。

客户端连接服务器的时候,下载这个数字证书。

数字证书不等于根证书。

posted @   429512065  阅读(1396)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2019-03-27 关于海思NB-IOT芯片Hi2115是否有独立FOTA升级空间的讨论
2019-03-27 error: this 'if' clause does not guard... [-Werror=misleading-indentation]
2019-03-27 自注册第二次失败原因
2018-03-27 Qsys配置生成nios系统模块
2018-03-27 sprintf()函数使用异常
点击右上角即可分享
微信分享提示