PKI - 公钥基础设施
1. PKI 定义
RFC 2822 将公钥基础设施的定义为 基于非对称密码体制的,用来生成、管理
存储、分配和撤销数字证书的一套硬件、软件、人员、策略和过程。
PKI的主要目标是安全、方便和高效的获取公钥。
为什么需要PKI?
因为仅有公/私钥加密体系不足以去认证一个用户的信息。
PKI具有以下功能
(1) 密钥的安全生成
(2) 初始身份的确认
(3) 证书的颁发、更新和终止
(4) 证书的有效性检查
(5) 证书相关信息的分发
(6) 密钥的安全存档和恢复
(7) 签名和时间戳的产生
(8) 信任关系的建立和管理
2. PKIX 模型

(1) 端实体(end entity): 一个用来表示终端用户、设备(服务器或路由器)、或者其他任何可以在公钥证书的主体域
被确定身份的实体的通用术语。
(2) 认证机构(Certification Authority, CA)
负责创建或证明身份的可信赖的权威机构。
CA实现了对申请者的身份验证以及颁发数字证书的过程
CA制订了一些规则,这些规则使申请者和证书用户确信该CA所确认的身份适用于自己
的目的并且是可以信赖的。
CPS(Certification Practices Statement) 描述了CA在各方面受的约束情况及运作方式的规则
也是CRL(撤销证书列表)的发放者。
全球CA认证服务市场
Verisign
Thawte
GeoTrust
(3) 注册中心(Registration Authority, RA) 承担很多从CA处继承的管理功能。
(4) CRL 发放者: 可以代理CA发布CRL。
(5) 存储库: 储存证书和CRL的地方。
2. 数字证书

主要功能流程:
(1) 注册过程: PKI用户通过注册机构(RA)来注册身份。
(2) 初始化过程: 客户端需要安装密钥,该密钥生成的公钥是由某个可信CA担保的
(3) 认证过程: CA为一个用户的公钥发放一个证书,CA会存储此证书并将该证书发放给客户端。
(4) 密钥对恢复: 密钥对可以用来加密和解密数据,也可以用来做数字签名。如果客户因某种原因丢失
密钥对,可以向CA处恢复加解密的密钥对。
(5) 密钥对更新:所有密钥对都需要定期更新,并且发放新证书。证书过期或证书被撤销时,也需要更新。
(6) 撤销申请: 某客户向CA请求撤销证书申请
(7) 交叉认证: 两个CA互相交换用于建立交叉证书信息。一个交叉证书是一个CA给另一个CA发放的证书,证书中
包含一个CA用于发放证书的签名密钥。
为什么需要证书 ?
公钥加密可以做到利用一个公钥验证相应私钥签名的文件或者数据,
没有办法知道这个私钥的持有人的真实身份,任何人都可以生成一对甚至无数对公开密钥对,
密钥对跟特定的实体之间没有任何必然的联系。
数字证书正是为了建立实体跟密钥对之间的联系而存在 ,证书验证中心CA充当了确认特定实体跟 密钥对之间关系
的确认人,并且通过用自己的私钥对这些确认的信息和公钥一起签名来保证其可信性和不可改变性。
CA服务器的基本功能
* 接受申请证书的请求: 在线实时(OSCP),在线非实时,本地提交
* 审核证书请求
* 签发证书
* 发布证书
* 吊销证书
* 生成和发布证书吊销列表(CRL)
* 证书库管理
OpenSSL CA指令
openssl ca [-help] [-verbose] [-config filename] [-name section] [-gencrl] [-revoke file] [-valid file] [-status serial] [-updatedb] [-crl_reason reason] [-crl_hold instruction] [-crl_compromise time] [-crl_CA_compromise time] [-crldays days] [-crlhours hours] [-crlexts section] [-startdate date] [-enddate date] [-days arg] [-md arg] [-policy arg] [-keyfile arg] [-keyform PEM|DER] [-key arg] [-passin arg] [-cert file] [-selfsign] [-in file] [-out file] [-notext] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file] // 输入一个自签名的证书 [-preserveDN] [-noemailDN] [-batch] [-msie_hack] [-extensions section] [-extfile section] [-engine id] [-subj arg] [-utf8] [-create_serial] [-rand_serial] [-multivalue-rdn] [-rand file...] [-writerand file]
#openssl ca -in req.pem -out cert.cer -notext
#openssl ca -notext -startdate 180909000000Z -enddate 280909000000Z -infiles req1.pem req2.pem
#openssl ca -revoke cert.pem -crl_reason keyCompromise
# openssl ca -gencrl -crldays 7 -crlhours 7 -out crl.crl

浙公网安备 33010602011771号