组成部分
一个 PKI 体系由四部分共同组成:终端实体、证书认证机构、证书注册机构、证书/CRL存储库;
终端实体 EE(End Entity)
也称为 PKI Entity(PKI 实体),它是 PKI 产品或服务的最终使用者,可以是个人、组织、设备(如路由器、防火墙)或计算机中运行的进程。
证书认证机构 CA(Certificate Authority)
CA是Certificate Authority的缩写,也叫“证书授权中心”。
它是负责管理和签发证书的第三方机构。一般来说,CA必须是所有行业和所有公众都信任的、认可的。因此它必须具有足够的权威性。就好比A、B两公司都必须信任C公司,才会找C公司作为公章的中介。
CA 是 PKI 的信任基础,是个用于颁发并管理数字证书的可信实体。它是种权威性、可信任性、公正性的第三方机构,通常由服务器充当,例如 Windows Server 2008 等等。
CA 的核心功能就是发放和管理数字证书,包括:证书的颁发、证书的更新、证书的撤销、证书的查询、证书的归档、证书废除列表(CRL,Certificate Revocation List)的发布 等等。
CA 通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为:
1)Root CA(根 CA):是公钥体系中第一个证书颁发机构,它是信任的起源。根CA可以为其它CA颁发证书,也可以为其它计算机、用户、服务颁发证书。对大多数基于证书的应用程序来说,使用证书的认证都可以通过证书链追溯到根CA。根CA通常持有一个自签名证书。
2)从属 CA,必须从上级 CA 处获取证书。上级CA可以是 Root CA 或是一个已由 Root CA 授权可颁发从属 CA 证书的从属 CA。上级CA负责签发和管理下级CA的证书,最下一级的CA直接面向用户。例如,CA2和CA3是从属CA,持有CA1发行的CA证书;CA4、CA5和CA6是从属CA,持有CA2发行的CA证书。
当某个 PKI Entity 信任一个CA,则可以通过证书链来传递信任,证书链就是从用户的证书到根证书所经过的一系列证书的集合。当通信的 PKI Entity 收到待验证的证书时,会沿着证书链依次验证其颁发者的合法性。
证书注册机构 RA(Registration Authority)
是数字证书注册审批机构,RA 是 CA 面对用户的窗口,是 CA 的证书发放、管理功能的延伸,它负责接受用户的证书注册和撤销申请,对用户的身份信息进行审查,并决定是否向CA提交签发或撤销数字证书的申请。
RA 作为 CA 功能的一部分,实际应用中,通常 RA 并不一定独立存在,而是和 CA 合并在一起。
RA 也可以独立出来,分担 CA 的一部分功能,减轻 CA 的压力,增强 CA 系统的安全性。
证书/CRL存储库
由于用户名称的改变、私钥泄漏或业务中止等原因,需要存在一种方法将现行的证书吊销,即撤消公钥及相关的PKI实体身份信息的绑定关系。
在 PKI 中,所使用的这种方法为 CRL(证书废除列表)。任何一个证书被撤消以后,CA 就要发布 CRL 来声明该证书是无效的,并列出所有被废除的证书的序列号。所以,CRL 提供了一种检验证书有效性的方式。证书/CRL存储库 用于对证书和 CRL 等信息进行存储和管理,并提供查询功能。
构建证书/CRL存储库,可以采用 LDAP Server、FTP Server、HTTP Server 或 Database 等等。其中 LDAP 规范简化了笨重的 X.500 目录访问协议,支持 TCP/IP,已经在 PKI 体系中被广泛应用于证书信息发布、CRL 信息发布、CA 政策以及与信息发布相关的各个方面。如果证书规模不是太大,也可以选择架设 HTTP、FTP 等服务器来储存证书,并为用户提供下载服务。
CA证书
CA证书,是CA颁发的证书。
生命周期
PKI 的核心技术就围绕着本地证书的申请、颁发、存储、下载、安装、验证、更新、撤销的整个生命周期进行展开。
证书申请
证书申请即证书注册,就是一个 PKI Entity 向 CA 自我介绍,并申请获取证书的过程。
通常,PKI Entity 会生成一对公私钥:
1)公钥和自己的身份信息(包含在证书注册请求消息中)被发送给 CA 用来生成本地证书
2)私钥 PKI 实体自己保存用来数字签名和解密对端实体发;
PKI Entity 问 CA 申请本地证书有以下两种方式:
1)在线申请:PKI Entity 支持通过 SCEP(Simple Certificate Enrollment Protocol)或 CMPv2(Certificate Management Protocol version 2)协议向 CA 发送证书注册请求消息来申请本地证书。
2)离线申请(PKCS#10 方式):是指 PKI Entity 使用 PKCS#10 格式打印出本地的证书注册请求消息并保存到文件中,然后通过带外方式(如 Web、磁盘、电子邮件 等)将文件发送给 CA 进行证书申请。
证书颁发
PKI Entity 向 CA 申请本地证书时,如果有 RA,则先由 RA 审核 PKI Entity 的身份信息,审核通过后,RA 将申请信息发送给 CA。CA 再根据 PKI Entity 的公钥和身份信息生成本地证书,并将本地证书信息发送给 RA。如果没有 RA,则直接由 CA 审核 PKI Entity 身份信息。
证书存储
CA 生成本地证书后,CA/RA 会将本地证书发布到 证书/CRL存储库 中,为用户提供下载服务和目录浏览服务。
证书下载
PKI Entity 通过 SCEP 或 CMPv2 协议向 CA Sever 下载已颁发的证书,或者通过 LDAP、HTTP 或带外方式,下载已颁发的证书。
该证书可以是 自己的本地证书,也可以是 CA/RA 证书 或 其他 PKI Entity 的本地证书;
证书安装
当 PKI Entity 下载证书后,还需安装证书,即将证书导入到设备的内存中,否则证书不生效。
该证书可以是自己的本地证书,也可以是CA/RA证书,或其他PKI实体的本地证书。
通过SCEP协议申请证书时,PKI Entity 先获取 CA 证书并将 CA 证书自动导入设备内存中,然后获取本地证书并将本地证书自动导入设备内存中。
证书验证
当 PKI Entity 获取对端实体的证书后,当需要使用对端实体的证书时(例如 与对端建立安全隧道或安全连接 等等),通常需要验证对端实体的本地证书和 CA 的合法性(证书是否有效或者是否属于同一个 CA 颁发等)。
如果证书颁发者的证书无效,则由该 CA 颁发的所有证书都不再有效。但在 CA 证书过期前,设备会自动更新 CA 证书,异常情况下才会出现CA证书过期现象。
PKI Entity 能够通过 CRL 或 OCSP(Online Certificate Status Protocol)方式检查证书是否有效。
1)使用 CRL 方式时:PKI Entity 先查找本地内存的 CRL,如果本地内存没有 CRL,则需下载 CRL 并安装到本地内存中;如果证书在 CRL 中,表示此证书已被撤销。
2)使用 OCSP 方式时,PKI Entity 向 OCSP Server 发送某个对于证书状态信息的请求,OCSP Server 会回复一个“有效”(证书未被撤消)、“过期”(证书已被撤消)或“未知”(OCSP Server 无法判断请求的证书状态)的响应。
证书更新
当证书过期、密钥泄漏时,PKI Entity 必须更换证书,可以通过重新申请来达到更新的目的,也可以使用 SCEP 或 CMPv2 协议自动进行更新。
证书撤销
由于用户身份、用户信息或者用户公钥的改变、用户业务中止等原因,用户需要将自己的数字证书撤消,即撤消公钥与用户身份信息的绑定关系。
在 PKI 中:CA 主要采用 CRL 或 OCSP 协议撤销证书;而 PKI Entity 撤销自己的证书是通过带外方式申请;
参考文献
PKI System Structure – S600-E V200R013C00 Configuration Guide – Security – Huawei
https://en.wikipedia.org/wiki/Certificate_authority
CA证书扫盲,https讲解。
https工作原理及CA证书部署