IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> SSL证书以及其验证过程 -> 正文阅读

[网络协议]SSL证书以及其验证过程

本文整理了SSL证书的一些知识,主要是对与整个证书链验证原理的介绍,不涉及具体的报文细节

SSL证书内容

SSL证书是通信过程中一方的身份证明,用来发送给通信的另一方来证实自己的身份。其内容主要包括一些与自身相关的信息和与证书相关的信息以及自己的公钥。

一些明文信息
自己的公钥
CA的数字签名

CA机构签名过程

CA机构对服务端进行验证后(CA有自己的验证方式,线上或者线下都有),对服务器的明文信息先进行hash,得到摘要,然后用自己的私钥对摘要进行加密,得到数字签名。将签名和证书一起发放给服务器。

证书链

现实中不可能所有的证书都是由少数几个CA签发的,那样CA就太忙了。因此产生了证书链,根CA发布证书给中间CA,中间CA再发布证书给各个服务器。验证的时候,从下往上,最终验证到根CA。

验证过程

假设有两个中间CA,CA1和CA2,整个证书链如下所示

根CA -》CA1 -》CA2 -》 服务器

那么此时,服务器发给客户端的证书链中不仅包含自己的证书,还要包含各个中间CA的证书,本例子中也即CA1和CA2以及服务器自己的证书。
客户端首先验证 CA2 ->服务器这一环,分为以下步骤:

  1. 从CA2的证书中,拿出CA2的公钥,对服务器证书中的CA2的签名进行解密。
  2. 对服务器证书中的明文信息进行hash,使用的hash算法与CA2所使用的hash算法一致。
  3. 对比前两步的结果,看其是否相等,若相等则验证通过。

验证通过后,客户端继续验证证书链的下一个环节,即 CA1 -> CA2,与上一个环节大同小异,分为以下步骤:

  1. 从CA1的证书中,拿出CA1的公钥,对CA2证书中的CA1的签名进行解密。
  2. 对CA2证书中的明文信息进行hash,使用的hash算法与CA1所使用的hash算法一致。
  3. 对比前两步的结果,看其是否相等,若相等则验证通过。

验证通过后,客户端继续验证证书链的最后一个环节,即 根CA -> CA1,注意第一步的不同之处:

  1. 从自己本地的缓存中,拿出根CA的公钥,对CA1证书中的根CA的签名进行解密。
  2. 对CA1证书中的明文信息进行hash,使用的hash算法与根CA所使用的hash算法一致。
  3. 对比前两步的结果,看其是否相等,若相等则验证通过。

至此证书验证过程结束。客户端本地会缓存一些少量的,全球都认可的根CA的证书,根CA的证书是自签名的,其中也会包含根CA的公钥。

无论有多少中间CA(零个或者多个),只要沿着证书链进行验证,每一个环节都验证通过的话,服务器就是可信的。其中有一个环节验证不通过,服务器就是不可信的。

关于SSL协议以及SSL证书还有很多内容,以后随着学习慢慢补充。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:56:47  更:2022-05-05 11:57:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:33:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码