0
点赞
收藏
分享

微信扫一扫

SSL证书以及其验证过程

时光已翩然轻擦 2022-05-03 阅读 68

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

SSL证书内容

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

CA机构签名过程

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

证书链

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

验证过程

假设有两个中间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证书还有很多内容,以后随着学习慢慢补充。

举报

相关推荐

0 条评论