cnnic

一提到公钥证书, CA 是不得不提的一个概念。 那么什么是 CA 呢?


CA 全称是 Certification Authorities. 翻译过来就是 认证机构

CA是证书的签发机构,它是公钥基础设施(Public Key Infrastructure,PKI)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。

但是也根据场景不同往往还有另外一个意思。 通常 CA 证书也简称为 CA,意思是指那些可以用来给别人签发证书的证书,通常出现在证书链的最上层或者次上层。


CA 的作用

公开密钥基础建设中,CA 是信任链的起点。证书颁发机构的角色有如现实世界中的公证行,保证网络世界中电子证书持有人的身份。具体作法是透过中介证书,利用数字签名为多个客户签发多个不同的终端实体证书,形成一个以其根证书为顶层的树状结构,在此传递关系所有下层证书都会因为根证书可被信赖而继承信任基础

它的主要作用就是为其他三方实体签发证书,以便三方实体可以用这些证书在加密签名中使用。 同时既然它负责签发证书,那么它也需要对它签发的证书负责, 这里的负责包括管理这些证书的合法性(包括证书有效时间),负责确保它签发的证书是没有问题的(比如,作为CA 你给其他人签发了一个 Github.com 的证书,但是它不是 Github 的拥有者,那么此时 CA 就会被质疑)。

为什么需要 CA

真正买过证书的企业和个人可能都知道,一个专业的 CA 签发的证书价钱是很昂贵的。往往能到 500-1000/年。 但是分析起来,你会发现,CA 其实也没有为此做多少工作,无非就是用他们的证书给我们创建一个证书,然后我们就给他们付费了,而且得按年付费。 可谓一本万利啊。

有人可能就会想,我们为什么需要 CA?我们自己创建一个证书也能用啊。 这里我们就不得不说说 CA 的作用了。

CA 在证书中扮演的角色就像是一个德高望重的老人,所有人都尊重他,所有人都对他的品德给予足够的信任。 此时,有一个小伙子找到他,请他给自己的人品做保证,然后这个老人便对众人说,这个小伙子的人品没问题, 大家可以放心的信任这个年轻人, 然后众人基于对这个老人的信任,而选择相信这个年轻人。 通常,这个老人会对自己的身份地位负责,往往在做出这个承诺时,充分调查这个年轻人的人品,以便自己的名声不会因为给坏人做了担保而受损。

在证书的世界里,道理是一模一样的。一个 CA 机构通常都是“德高望重"的,对于它签发的证书,互联网中的其他实体都选择信任它。

当你用一个可信度的 CA 签发的证书,别人拿到你的公钥证书,基于对 CA 的信任,他会信任你的证书。 这个证书主要作用就是证明你是你,毕竟网络上双方往往不能物理上的碰面,而是通过网络协议进行通信,这样它只能通过你的证书保证你是你声称的那个人。

这里提一个小故事:

中国互联网络信息中心发行假证书事件


2009年,中国互联网络信息中心(CNNIC)的一名员工向Mozilla申请要求将 CNNIC 加入 Mozilla 的 根证书列表,并且得到了批准。后来微软也把 CNNIC加到了Windows的根证书列表里。


2015年,因CNNIC发行的一个中级CA被发现发行了Google域名的假证书,许多用户选择不信任CNNIC颁发的数字证书。并引起对CNNIC滥用证书颁发权力的担忧。


2015年4月2日,Google宣布不再承认CNNIC所颁发的电子证书。4月4日,继Google之后,Mozilla也宣布不再承认CNNIC所颁发的电子证书。2016年8月,CNNIC官方网站已放弃自行发行的根证书,改用由DigiCert颁发的证书。

所以,CA 挣钱的根本是自己的信用度


根证书和中间证书

这里我们还需要了解另外两个概念:根证书 和 中间证书

先来个例子直观的体验一下:



我们说上面三个证书构成了一个证书链。

这里 baidu.com 的证书是由 GlobalSign RSA OV SSL CA 2018 这个 CA 签发的。 GlobalSign RSA OV SSL CA 2018 的证书是由 GlobalSign Root CA - R3 签发的。

我们称 GlobalSign Root CA - R3 为根证书,它是自签名的。

什么是自签名:

自签名证书指的是那些签发机构是自己的证书。 也就是它的 Subject 和 Issuer 是同一个实体。 因为,如果每个证书都需要一个不同的签发机构的话,就进入先有鸡还是先有蛋的循环,因此必须存在一个自己给自己签发的证书。

如果识别自签名证书:



我们查看 GlobalSign Root CA - R3 证书的详细信息,发现 Subject 和 Issuer 是相同的。 因此它是自签名证书。

GlobalSign RSA OV SSL CA 2018 在这条证书链中是中间证书。 它也是 CA,但是它不是自签名,它的证书由GlobalSign Root CA - R3 签发。 等于说是 GlobalSign Root CA - R3 把自己签发证书的权力下放给了 GlobalSign RSA OV SSL CA 2018。 这样 GlobalSign RSA OV SSL CA 2018 也可以来给别人签发证书。



证书中关于 CA 的扩展

公钥证书中往往会附带上一个证书是否是 CA 的信息。 没有这个信息的证书是不能给别人签发的证书的。 我们在校验证书链的时候,也需要验证这些信息。

这里主要有两个信息,需要校验:

证书 Basic Constraints 扩展:

看一下 baidu的证书和GlobalSign RSA OV SSL CA 2018的这个扩展


因为baidu的证书不是 CA 证书,因此,Basic Constraints 扩展中的信息是 End Entity.

因为,GlobalSign RSA OV SSL CA 2018 是 CA,因此, Basic Constraints 扩展中的信息是 CA. 根证书也一样。

另外一个证书扩展信息是 Key Usage。 就像他的名字,这个扩展主要用来描述这个证书的用途。 这里也附带了证书是否可以签发其他证书的信息。

我们一下 baidu的证书和GlobalSign RSA OV SSL CA 2018的这个扩展:


左边是 baidu 的证书,右边是 GlobalSign RSA OV SSL CA 2018的证书。我们发现 GlobalSign RSA OV SSL CA 2018 的证书有一个 “Certificate Signing” 的标识。没有这个标识,是不能作为 CA 签发证书的。

Copyright Your xseozz.com Some Rights Reserved.
Powered By Z-BlogPHP.