Apache不直接校验根证书吊销状态,仅对终端及中间证书启用CRL/OCSP检查;需配置SSLCARevocationFile、SSLCARevocationCheck chain,并确保CRL文件由对应CA签发且未过期。
apache 本身不直接支持在服务端配置根证书的吊销列表(crl)检查,因为根证书是信任锚点,其吊销状态不由 apache 主动校验——它只验证终端证书和中间证书是否被 crl 或 ocsp 吊销,且前提是这些证书链中明确包含可查询的 crl 分发点(cdp)或 ocsp 响应器地址。
Apache 不验证根证书吊销状态
根证书是自签名的,预置在操作系统或浏览器的可信根存储中。它的“有效性”取决于是否被系统信任、是否过期、是否从信任库中移除,而不是通过在线 CRL 检查。Apache 的 SSL/TLS 实现(基于 OpenSSL)不会对根证书发起 CRL 查询,这是设计使然:若连根都不可信,整条链就无从建立。
真正需要做吊销检查的是:
- 终端实体证书(你的域名证书)
- 中间证书(如果其签发者不是根,且自身带 CDP 扩展)
启用终端/中间证书的 CRL 吊销检查
要让 Apache 在 TLS 握手时检查终端或中间证书是否被吊销,需满足两个前提:
- OpenSSL 版本 ≥ 1.0.2(推荐 1.1.1 或更高),且编译时启用了 CRL 支持
- Apache 配置中启用证书验证并指定 CRL 文件路径
关键配置示例(在虚拟主机或全局 SSL 配置块中):
SSLVerifyClient require<br>SSLVerifyDepth 2<br>SSLCACertificateFile /etc/ssl/certs/ca-bundle.crt<br>SSLCARevocationFile /etc/ssl/certs/my-ca-crl.pem<br>SSLCARevocationCheck chain
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- SSLCARevocationFile:指向你本地下载并定期更新的 CRL 文件(PEM 格式),该文件应覆盖所用中间 CA 的吊销列表
- SSLCARevocationCheck chain:表示对整条证书链(终端 + 中间)逐级检查吊销状态;设为 leaf 则只查终端证书
- CRL 文件必须由对应 CA 签发,且未过期;可用
openssl crl -in my-ca-crl.pem -text -noout查看有效期与签发者
如何获取并维护 CRL 文件
多数主流 CA(如 DigiCert、Sectigo)提供公开 CRL 下载地址,通常在证书的 CDP 扩展字段中可查:
openssl x509 -in your_domain.crt -text -noout | grep -A1 "CRL Distribution Points"
常见操作流程:
- 用
wget或curl定期拉取 CRL(例如每天 cron 执行) - 用
openssl crl -verify验证 CRL 签名是否有效 - 确保 CRL 文件权限为 Apache 可读(如
chmod 644),且路径在配置中准确无误
替代方案:OCSP Stapling(更高效)
相比 CRL,OCSP Stapling 是现代推荐方式:服务器主动向 CA 的 OCSP 响应器查询,并将响应结果随 TLS 握手一并“粘贴”给客户端,避免客户端直连 OCSP 服务器。
启用只需两步:
- 开启 stapling:
SSLUseStapling on - 配置缓存:
SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)
注意:OCSP Stapling 不检查根证书,仍只作用于终端和中间证书,但它实时性更好、开销更低,且无需手动管理 CRL 文件。

















