OpenVPN-尝试验证客户端证书上的 CRL

OpenVPN-尝试验证客户端证书上的 CRL

我在运行 OpenWRT 的硬件路由器上运行 OpenVPN。每次客户端连接时,我都会在日志中收到以下错误:

VERIFY WARNING: depth=0, unable to get certificate CRL

我有一个 2 级 CA,两个级别都发布 CRL,并且合并的 CRL 可在路由器上获得,而 OpenVPN 会使用它。

我很困惑为什么 OpenVPN 尝试获取深度为 0 的 CRL,即客户端证书。它不会抱怨深度 1 和 2,这表明我的 CRL 文件没有问题...

答案1

似乎 OpenVPN 的后续版本无法理解一个文件中的多个 PEM 编码 CRL。

如果您编辑 CRL 文件,使其仅包含客户端证书颁发 CA 的 CRL,您将发现不会出现 的错误depth=0,而是会出现 的错误depth=1。如果您交换当前文件中 CRL 的顺序,您可能会得到相同的结果。

要在 OpenVPN 的更高版本上解决这个问题,您应该使用--capath

--capath 目录

包含受信任证书(CA 和 CRL)的目录。mbed TLS 不提供此功能。

将所有 CA 证书和 CA 生成的 CRL 放在选项指向的目录中--capath。记得删除--ca option

运行c_rehash <path to certs and CRLs>以生成证书及其 CRL 的哈希值。

重新启动 OpenVPN,您会发现您的日志没有 CRL 警告。

笔记:您永远不应该收到针对 (您的根 CA) 的 CRL 警告,depth=2因为它将是一个自签名证书,而其中一个的 CRL 是没有意义的,因为它将由其自身签名。但似乎如果您省略根 CA 的 CRL,它会显示针对其自身 ( depth=2) 以及其颁发的证书 (位于 的中间 CA depth=1) 的验证警告。它应该只显示后者的警告。

相关内容