OpenVPN 验证 CRL 问题

OpenVPN 验证 CRL 问题

使用 OpenVPN/EasyRSA 3 设置(CA 和 VPN 入口点的拆分机器)时,我面临的问题是,无论我生成什么 CRL,OpenVPN 似乎都无法处理它。

设置概述:一切顺利

我遵循以下准则来设置相应的机器:

客户端的签名请求、实际签名、连接到 VPN、名称服务器推送、私有名称解析等所有工作都非常顺利。但是,我可以在 CA 上撤销证书(据我所知,没有“撤销请求”,而是直接在 CA 上撤销证书),并生成相应的 CRL,如下所示:

./easyrsa revoke doe.john.client
./easyrsa gen-crl

R撤销成功,证书上标有index.txt;检查生成的 CRL 并比较证书 ID 也成功,ID 是正确的。

openssl crl -noout -text -in <CRL-file>.pem

事情开始失败的地方

现在,生成 CRL 后的下一步是将其传输到 OpenVPN 服务器、更改文件权限(664)并更新 OpenVPNserver.conf以使用它:

[... properly working OpenVPN server.conf]

crl-verify /etc/openvpn/crl.pem

通过重新启动服务systemctl并通过附加到日志后journalctl,我开始尝试连接客户端证书,这些证书应该是有效的并且有不是已被撤销。

我在日志上看到的内容如下:

TLS: Initial packet from [AF_INET]<IP-REDACTED>:52786, sid=e545b723 a0690e44
<IP-REDACTED>:52786 VERIFY WARNING: depth=0, unable to get certificate CRL: CN=<COMMON-NAME-OF-VALID-CLIENT>
<IP-REDACTED>:52786 VERIFY WARNING: depth=1, unable to get certificate CRL: CN=<COMMON-NAME-OF-CA>
<IP-REDACTED>:52786 VERIFY ERROR: CRL not loaded
<IP-REDACTED>:52786 OpenSSL: error:1417C086:SSL routines:tls_process_client_certificate:certificate verify failed
<IP-REDACTED>:52786 TLS_ERROR: BIO read tls_read_plaintext error
<IP-REDACTED>:52786 TLS Error: TLS object -> incoming plaintext read error
<IP-REDACTED>:52786 TLS Error: TLS handshake failed

这实际上告诉我

  • 客户端能够联系 VPN 服务器
  • stat服务器能够crl.pem(否则日志会显示该步骤失败),即文件权限良好
  • CRL 具有未过期
  • 直接使用openssl生成 CRL(没有 EasyRSA 的便捷功能)会产生同样的问题
  • 服务器尝试在两个深度级别(即客户端证书和 CA)上检查 CRL,这对我来说似乎很奇怪
  • 日志表明 CRL 未加载
  • 没有客户端能够再连接

我遗漏了什么?

我似乎无法解决这个问题,因为日志、在线指南或在线搜索似乎都没有指出类似的问题。亲爱的专家们,我是不是漏掉了什么?

如果您需要更多详细信息,我很乐意提供。谢谢!

答案1

经过反复讨论,现在终于有了一个解决方案。我不知道更多细节,但是:

  • 我现有的 VPN 入口服务器仍在 CentOS 上运行,而该操作系统已经停止支持好几个月了。
  • 我刚刚在更新例程中偶然发现了这个问题,并且在过去几次运行中显然无法更新 VPN 入口服务器,这真的很糟糕。
  • 现在,我将设置移至 Rocky Linux 9,并且在 CRL、服务器配置及其位置保持不变的情况下,CRL 现在可以正确加载。

主要发现:确保在执行更新例程时不要忘记一些服务器 - 尤其是那些关键/重要的服务器

相关内容