mongodb 6.0 不支持 crl 验证,仅支持 ocsp 检查;其服务端无 crl 加载、解析或配置项(如 tlscrlfile),吊销验证实际由客户端驱动完成,需显式启用 ocsp=true 并配置 ocsp 装订。

MongoDB 6.0 不支持 CRL(证书吊销列表)验证。它只支持 OCSP(在线证书状态协议)检查,且仅限特定配置和驱动版本。
为什么 MongoDB 6.0 没有 CRL 支持
MongoDB 官方文档和源码中从未引入 CRL 文件加载、解析或校验机制。所有 TLS 证书撤销检查逻辑都围绕 OCSP 构建:服务端是否提供装订响应(stapled OCSP response),客户端驱动是否启用并能验证该响应。
- mongod/mongos 在 TLS 握手时 不发送 CRL 分发点(CRL Distribution Points)扩展,也不接受客户端提供的 CRL 文件路径
- 配置项如
tlsCRLFile、net.tls.crlFile或类似命名在 MongoDB 6.0 的配置手册和mongod --help输出中完全不存在 - 即使你把 CRL PEM 文件放在服务器上,也没有任何配置项可指向它,更不会被加载或使用
替代方案:用 OCSP 验证吊销状态(仅限驱动端)
证书吊销检查实际发生在客户端驱动(如 PyMongo、Node.js Driver),而非 MongoDB 服务端。MongoDB 6.0 本身不主动“验证吊销”,它只按需提供 OCSP 响应(v4.4+ 支持装订)。
- PyMongo 必须安装带 OCSP 支持的版本:
pip install pymongo[ocsp] - 连接时显式启用 OCSP:
tls=True+ocsp=True(注意:不是所有平台默认开启) - 若服务端是 MongoDB 6.0(≥ v4.4),且配置了
net.tls.OCSPStaplingEnabled: true,则会装订有效 OCSP 响应;PyMongo 将直接验证该响应 - 若服务端是旧版(≤ v4.2),PyMongo 会尝试直连 CA 的 OCSP 端点 —— 这要求网络可达、且未设置
tlsDisableOCSPEndpointCheck=True
常见错误现象与排查点
你以为启用了吊销检查,但实际没生效,通常因为以下任一原因:
- PyMongo 未安装 OCSP 支持:
import pymongo; print(pymongo.has_cryptography)返回False,说明缺少cryptography或pyopenssl依赖 - 连接字符串或构造函数里漏了
ocsp=True,仅设tls=True不够 - 服务端 MongoDB 6.0 虽支持 OCSP 装订,但配置中未启用:
net.tls.OCSPStaplingEnabled默认为false,必须手动设为true - CA 的 OCSP 响应签名不被客户端信任(例如自建 CA 未正确配置 OCSP 签名证书链)
真正需要 CRL 的场景(如离线环境、强合规审计),MongoDB 6.0 无法满足 —— 这不是配置问题,而是功能缺失。要么升级到支持 CRL 的后续版本(目前无公开路线图),要么在应用层前置代理做 CRL 检查,或改用支持 CRL 的数据库网关。











