数字证书

有些知识太碎片,没法完整的结合起来,有空做个笔记,把零碎的知识点理一理。

数字证书是为了解决服务方向客户提供公钥时候证明该公钥合法性而存在的。

假设某个通讯协议,在通讯初期需要使用rsa来进行加解密处理,服务方需要一开始向客户提供一个公钥。在这里,假设有黑客从中作梗,替换了服务器,生成了新的公私钥对,该服务器给客户新生成的公钥,那么接下来的通讯其实都是基于这个公钥的,那么客户根本无法判断服务器是否是自己想要访问的服务器。

为了解决这个问题,改进一下流程。服务器还是会把公钥信息给客户,但是会附加很多的额外信息,所有的额外信息组合起来,组成了数字证书。当然数字证书不是由服务方生成的,必须得(假设对外服务)经由特定的组织(CA)签发才会被操作系统认可。

该证书最主要的信息,其实还是上述需要给客户的公钥,同时还有2个信息用于确认公钥的合法性:证书指纹和指纹算法。

证书指纹是由证书算法提取过后的一串信息,用于辨认该信息是否被改动过,同时将指纹算法和证书指纹通过CA自己的私钥来进行加密,于是最主要的证书签名就完成了。

CA的公钥操作系统中内置,下面梳理一下客户拿到这个数字证书后如何判断该证书是否有效。

  1. 查看该证书的签发机构,同时从操作系统的证书列表中寻找该机构的证书,用于获取该证书中的公钥。
  2. 用公钥解密证书的指纹信息,获取指纹算法,对其余部分使用该算法进行摘要计算,判断结果是否与指纹一致。
  3. 若不一致,则证书非法;若一致,则说明该证书是合法的。

所以为了判断一个数字证书是否合法,需要获取CA的证书来解密该证书的指纹,继而判断合法性。而CA的证书是本身在操作系统内的。

有一篇文章讲得很好

共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day