使用 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 现在可以正确加载。
主要发现:确保在执行更新例程时不要忘记一些服务器 - 尤其是那些关键/重要的服务器