什么是CRL?
CRL(Certificate Revocation List,证书吊销列表)是由证书颁发机构(CA)定期签发并公开发布的已失效证书清单。当SSL证书因私钥泄露、域名变更、误颁发或CA自身安全事件等原因被主动撤销时,其序列号即被写入CRL。浏览器或客户端在TLS握手过程中可通过下载并校验CRL,确认目标证书是否仍处于有效状态。该机制是PKI信任体系中保障HTTPS安全的关键环节之一。
当前主流浏览器已逐步转向OCSP Stapling等更高效的实时验证方式,但CRL仍是合规审计、金融与政务系统强制要求的底层验证手段。未正确配置CRL分发点(CRL Distribution Points)或忽略CRL过期更新,将导致证书验证失败,在Nginx/Apache等服务器上表现为“NET::ERR_CERT_REVOKED”错误。
技术背景:CRL在PKI中的定位
CRL与OCSP的本质区别
CRL是一种“批量拉取+本地缓存”的离线验证模式,依赖客户端定时下载完整列表;而OCSP(Online Certificate Status Protocol)则是向CA指定服务器发起单次HTTP查询,返回即时状态响应。二者均用于解决“证书已吊销但尚未过期”的信任风险,但CRL对带宽和存储要求更高,OCSP则存在隐私泄露与单点故障隐患。
浏览器对CRL的实际支持现状
Chrome自2021年起默认禁用CRL检查,仅在企业策略或特定安全策略(如FIPS 140-2合规环境)下启用;Firefox仍保留CRL检查开关,但需手动开启;Safari与Edge则完全依赖OCSP Stapling。这意味着——若您的网站面向政府、银行或国企客户,必须确保CRL分发点URL可公开访问且响应头包含正确的Content-Type(application/pkix-crl)。
核心技术机制
| 指标 | 参考标准 | TopSSL专家建议 |
|---|---|---|
| 格式规范 | X.509 v2 / RFC 5280 | 使用DER编码而非PEM,避免Base64换行符干扰解析 |
| 更新频率 | CA/B Forum BR §4.9.7(≤24小时) | 生产环境建议设置为每6小时更新,配合CDN缓存TTL=3600s |
| 分发点URL | 必须含在证书扩展字段中 | 优先部署HTTPS URL,禁用HTTP;避免使用IP地址或内网域名 |
| 签名算法 | SHA-256 + RSA-2048 或 ECDSA-P256 | 不接受SHA-1签名;国密系统需SM3+SM2双签名 |
工程实践与部署经验
某省级政务云平台曾因CRL分发点配置为http://crl.example.gov.cn(无HTTPS),导致全省23个子系统在Firefox ESR 115版本升级后批量报错“SEC_ERROR_OCSP_SERVER_ERROR”。根因并非OCSP故障,而是Firefox在检测到HTTP CRL地址时自动降级为CRL本地校验,而该地址被WAF拦截。最终通过重签证书、替换为https://crl.example.gov.cn并开放443端口解决。
真实运维中,90%以上的CRL相关故障源于三个硬性限制:① 分发点URL不可达(DNS未解析/防火墙拦截);② CRL文件超过10MB(主流CA默认<2MB);③ 证书未嵌入CRL分发点扩展(常见于自签名或老旧OpenSSL生成证书)。建议在SSL证书部署前,使用SSL证书检查工具验证CRL字段完整性。
对于采用Let's Encrypt免费SSL证书的中小站点,无需关注CRL——因其证书有效期仅90天,且设计哲学即“用短期替代吊销”。但若您使用锐安信、Digicert等商业CA签发的3年OV/EV证书,则必须确保CRL机制可用,否则可能触发等保三级“身份鉴别”条款不合规风险。
常见问题
Q:CRL文件可以手动下载查看内容吗?
A:可以。使用OpenSSL命令 openssl crl -in crl.pem -text -noout 即可解析PEM格式CRL;若为DER格式,需先转换:openssl crl -inform DER -in crl.der -outform PEM -out crl.pem。
Q:证书被加入CRL后还能恢复吗?
A:不能。CRL是单向追加式日志,一旦写入即永久留存。唯一补救方式是重新申请新证书并更新服务器配置。
Q:CRL会影响HTTPS性能吗?
A:会。首次建立连接时若强制校验CRL,可能增加300–800ms延迟。建议启用OCSP Stapling,并在Nginx中配置 ssl_stapling on 与 ssl_trusted_certificate 指向完整证书链。
京公网安备11010502031690号
网站经营企业工商营业执照