数字证书相当于网上的身份证,由证书认证(CA)机构认证并颁发,且具有一个指定的寿命。当发生证书遗失等情况时,CA机构会吊销证书来终止证书寿命。这些被吊销的证书的序列号被CA机构公布于一个证书吊销列表 (Certificate Revocation List,简称CRL)中。通过阅读本文,你将了解CRL的概念、作用、工作原理等信息。

什么是CRL

我们知道,数字证书一旦颁发是不可能收回的。但在证书有效期期间,发生特殊情况,如:泄露密钥、从属关系改变,这时用户只能向当初颁发这张证书的Certificate Authority (CA)或Register Authority(RA)机构提出注销证书的申请,CA或RA机构经过审核后将实施证书注销。

所谓注销,就是要求颁发这张证书的CA机构公布一个”黑名单“,宣布该张证书已经被注销作废,警告有关的交易者注意,不要再使用与这张证书绑定的公钥。

在PKI安全认证体系中,这个"黑名单"称为证书注销列表(或证书撤销清单证书注销清单证书废止列表等),英文是Certificate Revocation List(CRL)。

作用

数字证书注销机制可以防止证书遗失或发现私钥失密后,不法分子冒用用户证书、私钥实行欺诈交易所带来的损失。这和信用卡注销、有效证件注销的机制十分类似。

工作原理

当你申请注销数字证书后,安全认证应用软件在验证证书的有效性时,会去访问CRL列表。这个列表相当于“黑名单”,一旦发现通信对方的证书在这张列表中,就不能通过验证。

CRL内容

根据X.509标准,CRL内容及数据结构定义如下图所示:

CRL 版本号 CRL签名算法 CRL颁布者 本次更新时间 下次更新时间 ······注销的证书列表············ 扩展项······

其中,

  • CRL签名算法是指计算本CRL的数字签名所用算法的标识符(如:RSA、MD5等算法的标识符)。
  • CRL颁布者是指颁发CRL的CA机构的可识别名(DN)。
  • 注销的证书列表仅列出被注销证书的唯一序列号。
  • 扩展项,其包含:
    • 理由代码——指出该证书被注销的理由,如:密钥损坏、CA损坏、关系变动、操作终止等;
    • 证书颁发者——列出该证书颁发者的名字;
    • 控制指示代码——用于证书的临时冻结;
    • 失效日期——列出该证书不再有效的日期。

为了保证CRL的真实性和完整性,CRL数据的后面附有CA机构对CRL的数字签名。

CRL的更新

定期更新

从安全的角度上讲,CRL最好是进行实时更新,即一旦发生证书注销事件就立即更新,以杜绝欺诈案件的得逞。但这种实时更新的代价非常高,要占用大量的网络资源和服务器资源,反过来又会影响到网上交易的进行。因此,业内普遍的做法是定期更新。

增量CRL

当CRL数据总量非常庞大时,即使是每天更新一次,也会给系统带来过大的负担。增量CRL的想法就是不需要每注销一张证书就产生一个完整的、越来越大的CRL,它只是产生一个与注销该证书相关的增加信息。

根据定义,增量CRL是以已经颁发的注销信息为基础,称为基本CRL。增量CRL中含有的是基本CRL中不含有的信息。它的好处是体积很小的增量CRL可以比基本CRL的更新频率高得多。例如,庞大的基本CRL的更新周期如果是一周的话,增量CRL的更新周期可以定为八小时,甚至更短。显然,这样的安全策略具有较高的安全性,而且不会给系统造成过大负担。

更多信息

既然CRL是CA机构发布的“黑名单”,那是否存在“白名单”呢?答案是肯定的,即在线证书状态协议(OCSP)。CRL和OCSP这两种机制所针对的目标和实现的功能是一样的,只不过实现的方法途径不一样。有关OCSP信息,参阅OCSP概览