HyperLedger - 序列6 - X.509 与 五花八门的证书文件.crt/.cer./.pem/.key...

跟安全相关的领域,有各种专业名词:X.509,CSR,LDAP,CA,PKI,MSP。。以及五花八门的各种证书。初接触者往往会眼花缭乱,理不清楚这些东西之间的关系。

这1篇将在序列5的基础上,进一步介绍跟安全相关的各种内容。

3个核心概念
在序列5,介绍了证书的概念;同时,在比特币的序列,也介绍了私钥和公钥之间的关系。这个地方,再次总结一下3者的关系:
私钥(Private Key) : 1长串随机的字符串

公钥(Public Key):根据私钥生成,私钥和公钥形成一对。

证书(Certificate):公钥 + 公钥持有者的个人信息 + 第3方(CA)的数字签名

X.509标准
X.509是啥呢?X.509是由国际电信联盟(ITU-T)制定的数字证书标准。
通俗点讲,就是定义了上面说的Certificate的格式(具体包括哪些字段,每个字段的内容)。具体包括下面的一些字段:

(1)公钥
(2)公钥持有人的主题信息:国家,组织单位,名称,邮箱等。。
(3)第3方(CA)的数字签名
(4)序列号:由CA给予每一个证书分配的唯一的数字型编号,当证书被取消时,实际上是将此证书序列号放入由CA签发的CRL(Certificate Revocation List证书作废表,或证书黑名单表)中。这也是序列号唯一的原因。
(5)证书的有效期
(6)发证机关(CA)的名称
(7)发证机关使用的签名算法

五花八门的各种证书格式
尽管X.509标准规定了证书内容规范,但各类证书由于存储的内容不同(如是否包含公钥/私钥是否加密存储/单一证书或多证书等)、采用编码不同(DER/BASE64)、标准不同(如PEM/PKCS),所以呢,证书文件还是五花八门。

下面列举了一些常用的证书文件格式:
先按编码,分为2大类:Base64编码 与 2进制编码
(1)Base64编码
.crt/.cer //.crt 和 .cer 可以认为是同一种格式,不同叫法。存储的都是公钥对应的证书。

.key //私钥

.crt + .key / .cer + .key //构成1对公钥/私钥对

扫描二维码关注公众号,回复: 3297310 查看本文章

.pem //pem文件,存的可能是公钥,也可能是私钥,或者合在一起。

(2)2进制编码
.der
.cer //cer文件,可能是Base64编码,也可能是2进制。

除了上面这些格式,还有.ppk, .p12, ..以及其他各种PKCS的格式,在此就不再一一列举。
关键是把握原理:知道每种格式里面,存的是公钥,还是证书,还是私钥,或者合在一起存储的。

CSR
CSR,全称Certificate Signing Request,也就是上1篇所讲的,证书申请者向CA服务器发送的请求:申请者发送自己的公钥,CA返回数字证书。

只是这个请求呢,也被标准化了,是PKI安全体系的一部分。

那么CSR里面都有哪些信息呢?
很显然,有公钥,有申请者的个人信息。

但这还不够,公钥在发送给CA的时候,被拦截,然后被篡改怎么办?

所以CSR里面包含了一个签名,用发送者自己的私钥签名。说的绕1点:发送者用自己的私钥,对自己的公钥做个签名,然后发给CA。

这样,这个CSR请求不可能被篡改:CA拿到请求,用发送者的公钥来验签。

总结一下,CSR包括3部分信息:
公钥 + 申请者的个人信息;
签名;
签名算法的标识(告诉CA,是用什么算法签的)

LDAP
LDAP(Lightweight Directory Access Protocal),轻量级目录访问协议。
这个名字呢,听起来不明觉厉,实际上可以简单的理解为一个类似Mysql的数据库 + 上面搭建的一个读写服务。

当然,它是树形数据库,不是通常的关系数据库。

另外呢,这个东西不是一个实际的技术框架,而是一个协议,或者说互联网上的一个标准。很多厂商的软件都实现了这个标准。

简单点讲,可以先把它当做一个可以提供数据存储、数据读写的服务。

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 这里写图片描述

猜你喜欢

转载自blog.csdn.net/chunlongyu/article/details/80759065