使用 数字证书 (Digital Certificate)
与 数字签名 (Digital Signature)
来保证公钥
数字证书
数字证书
就是网络通讯中标志通讯各方身份信息的一系列数据,其作用类似于现实生活中的身份证。它是由一个权威机构发行的,人们可以在互联网上用它来识别对方的身份。
数字证书:
颁发者:CA 证书授权 (Certificate Authority) 中心
拥有者:申请到证书的通信者
证明的能力:身份认证,也就是说证明我就是我
数字证书的组成
- Certificate(证书):
- Common Name(证书所有人姓名,简称 CN,其实就是证书的名字,如第一幅图看到的:ABA.ECOMRoot….)
- Version(版本,现在一般是 V3 了)
- Issuer(发证机关)
- Validity(有效日期)
- Subject(证书信息,你会发现它和 Issuer 里面的内容是一样的)
- Subject’s Public Key Info(证书所有人公钥,刚才所说的公钥就是这个!)
- Extension(扩展信息)
- Certificate Signature Algorithm(公钥加密算法)、
- Certificate Signature Algorithm: 这是描述证书的加密算法
- Certificate Signature Value: 这记录的是证书被加密后的密文
CA
数字证书认证机构(英语:Certificate Authority,缩写为 CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
CA 中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA 机构的数字签名使得攻击者不能伪造和篡改证书。
CA 认证中心
之间是一个树状结构, 根 CA 认证中心
可以授权多个 二级的 CA 认证中心
, 二级 CA 认证中心
也可以授权多个 三级的 CA 认证中心
… 如果你是 数字证书申请人
,你可以向 根 CA 认证中心
,或者 二级,三级的 CA 认证中心
申请数字证书,这是没有限制的,当你成功申请后,你就称为了 数字证书所有人
。
值得注意的是,根 CA 认证中心是有多个的,也就是说会有多棵这样的结构树。
权威性
上图中的 CA 认证中心所有人
,他们都有一个数字证书,和属于自己的公钥和私钥,这些是他们的 父 CA 认证中心
颁发给他们的。 根 CA 认证中心
的证书称为 根证书
,根证书自己认证自己的有效性,根证书是整个证书体系安全的根本,如果根证书出了问题,他下面所有子证书都不可被信任,因为子证书都是依赖根证书证明自己的有效性的,从而形成 证书信任链
。
对于私钥:CA 认证中心 / 数字证书所有人自己保存,不公开
对于公钥:CA 认证中心 / 数字证书所有人会把公钥存在他的 CA 认证中心的数字证书内
数字签名过程
数字证书
使用 数字签名
作验证
- 证书内容计算
hash 值
- 然后
hash 值
*会被发布这个数字签名的 CA 认证机构的私钥
进行RSA 加密
*,例如现在被加密的数字证书是属于二级 CA 认证机构
的,那么用来加密这个证书的私钥是根 CA 认证机构的私钥
数字证书验证合法性
当你要验证这个数字证书可信 / 合法性时,
- 找到**
上一层 CA 认证中心
的数字证书,并且从中获取公钥** - 对数字证书中的
密文 F'
进行RSA 解密
,得到 hash 值 h1 - 计算数字证书 hash 值得到 h2
- 比较 h1 和和 h2
- 如果相等,则认为证书是可信的,合法的!
验证一个证书是否合法,需要验证到他的最顶层的根证书是否合法!所以上面说到根证书是整个证书体系安全的根本。
总结
数字证书的制作使用了数字签名,每一个数字证书里面都包含了申请者的公钥。Alice
与 Bob
通信之前, Alice
不直接要 Bob
的公钥,而是去要一个 Bob 去 CA 申请的数字证书
,数字证书中有 Bob
的公钥,而且数字证书证明了他就是 Bob
, Alice
只要验证数字证书没有问题就可以开始通信了。