在查阅 RFC 5280 时,我注意到不同扩展中使用的原因代码似乎有所不同。请问,对于 CRL 分发点扩展,它使用的是哪一个?第一个原因代码还是第二个原因代码?
(1)CRLReason ::= ENUMERATED {
未指定(0),
keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8), privilegeWithdrawn (9), aACompromise (10) }
(2)ReasonFlags ::= BIT STRING { unused(0), keyCompromise(1), cACompromise(2), affiliationChanged(3), superseded(4), cessationOfOperation(5), certificateHold(6), privilegeWithdrawn(7), aACompromise(8) }
它们都被使用,但有不同的用途:
第一个“the
CRLReason
”用于在已发布的 CRL 中说明证书被撤销的原因。这是一个枚举类型,因为撤销原因只能有一个。CRL 分发点使用第二个 - the
ReasonFlags
- ,以便它可以针对不同的撤销原因设置不同的分发点。这是一个位串,因为一个分发点可以用于多种撤销原因。但请注意,RFC 指出:
例如,假设 example.com 的 PKI(违反建议)操作分段分发点:
如果证书因其特权被撤销而被吊销,则已发布的 CRL 中的扩展将包含该证书序列号的
CRLReason
值 9 ( )。privilegeWithdrawn
ReasonFlag
PKI 将在包含值 7(对于privilegeWithdrawn
)的分发点(即 )发布 CRLothers.crl
。URL 及其名称
ReasonFlags
都已放置在相关证书的 CRL 分发点扩展中,以便依赖方可以找到正确的 CRL。据推测,建议不要进行分段,因为依赖方每次验证证书时都必须检查多个 CRL。