Windows独立根CA未配置相关参数却在CRL中发布已过期吊销证书的问题咨询
我来帮你拆解这个看似矛盾的问题——按照你给出的配置,确实不该出现已过期的吊销证书长期留在CRL里的情况,咱们可以从几个容易被忽略的角度排查:
吊销时间与证书过期时间的先后关系
你可以先确认这些2018年过期的证书,它们的吊销操作是在证书过期前还是过期后执行的?如果吊销动作发生在证书过期之后,Windows独立CA的默认逻辑会把这类记录保留在CRL中,因为它认为这是一个“过期后才被吊销”的事件,需要被公示。你可以用命令certutil -view -out "RequestID,SerialNumber,RevocationDate,NotAfter"查看具体记录,对比RevocationDate和NotAfter的时间戳。注册表配置的隐性异常
虽然你说CRLF_PUBLISH_EXPIRED_CERT_CRLS未设置,但建议你再仔细核对注册表路径HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<你的CA名称>:- 确认这个DWORD值确实不存在(而不是被设置为1后又删除,CA服务可能没刷新配置),如果之前改过,建议重启CA服务再生成CRL试试;
- 检查
EKUOIDsForPublishExpiredCertInCRL的数值,确认没有被意外添加IPSec证书的OID(1.3.6.1.5.5.7.3.10)——哪怕是不小心加进去,都会导致这类证书被特殊处理。
CRL生成的缓存或服务异常
有时候CA生成CRL时会读取缓存的历史记录,而非实时过滤数据库。你可以手动触发一次CRL生成:certutil -crl,然后检查新生成的CRL内容。如果问题依旧,尝试重启CA服务,确保所有配置变更(哪怕是之前的)都已生效。独立CA数据库的历史记录残留
独立根CA不会自动归档或清理数据库中的旧吊销记录,哪怕证书早已过期。如果CA数据库从未被清理过,每次生成CRL时可能会把所有历史吊销记录都包含进去。你可以尝试清理指定日期前的记录(操作前务必备份CA数据库):certutil -deleterow 1/1/2019 CA这个命令会删除2019年1月1日之前的证书记录,之后再生成CRL看看是否还会出现旧证书。
备注:内容来源于stack exchange,提问作者Helstrom

