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

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值