Ao revisar a RFC 5280, notei que os códigos de razão usados em diferentes extensões parecem variar. Gostaria de perguntar, para a extensão CRL Distribution Points, qual ela usa — a primeira ou a segunda?
(1)CRLReason ::= ENUMERADO {
não especificado (0),
keyCompromise (1), cACompromise (2), affiliationChanged (3), substituído (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8), privilegeWithdrawn (9), aACompromise (10) }
(2)ReasonFlags ::= BIT STRING { não utilizado (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), substituído (4), cessationOfOperation (5), certificateHold (6), privilegeWithdrawn (7), aACompromise (8) }
Ambos são usados, mas têm finalidades diferentes:
O primeiro - o
CRLReason
- é usado em uma CRL publicada para indicar o motivo da revogação de um certificado. Esta é uma enumeração, pois só pode haver um motivo para a revogação.O Ponto de Distribuição da CRL usa o segundo - o
ReasonFlags
- para que possa ter diferentes pontos de distribuição por diferentes motivos de revogação. Esta é uma sequência de bits, pois um ponto de distribuição pode ser usado por vários motivos.Observe, no entanto, que o RFC diz:
Por exemplo, uma PKI hipotética para example.com (que vai contra a recomendação) opera Pontos de Distribuição segmentados:
Se um certificado fosse revogado devido à retirada de seu privilégio, a
CRLReason
extensão dentro da CRL publicada conteria o valor 9 (privilegeWithdrawn
) em relação ao número de série desse certificado.A PKI publicaria a CRL no ponto de distribuição que
ReasonFlag
contém o valor 7 (paraprivilegeWithdrawn
) - ou seja, emothers.crl
.Ambas as URLs e seus respectivos certificados
ReasonFlags
já estão colocados na extensão do Ponto de Distribuição da CRL do certificado em questão para que as partes confiáveis possam encontrar a CRL correta.Presumivelmente, a recomendação não é segmentar, pois as partes confiáveis teriam que verificar várias CRLs cada vez que verificassem um certificado.