网络加速

OpenVPN证书吊销列表配置前提条件实操指南

OpenVPN证书吊销列表配置前提条件实操指南

很多运维人员在配置OpenVPN证书吊销列表时,经常遇到配置完CRL文件完全不生效、甚至直接导致全量VPN服务断连的问题,绝大多数故障都不是配置操作本身的错误,而是没有满足对应的前置要求。本文从故障排查的实操角度,星星逐项拆解OpenVPN证书吊销列表配置前提的所有校验项,帮你在正式写入配置前排除绝大多数隐性问题,避免上线后出现非预期的连接异常。

OpenVPN服务端CA根证书权限与签发逻辑校验

很多用户图省事直接复用其他CA生成的CRL文件往OpenVPN配置目录里丢,最终出现CRL完全不生效的问题,最核心的前提就是CRL必须由当前签发所有客户端证书的同一套根CA私钥签发,任何其他CA生成的CRL都无法通过OpenVPN的签名校验,服务端会直接判定CRL文件无效,不会加载任何吊销规则。

网络设备:OpenVPN证书吊销列表:配

运维人员在服务器机房内逐项校验OpenVPN证书吊销列表的配置前置条件

正式配置前可以通过openssl命令做签名匹配校验,执行openssl crl -in 你的CRL文件路径 -CAfile 当前服务端使用的ca.crt,如果命令执行后没有报错,正常输出CRL的发布时间、更新周期等基础信息,就说明CRL和当前服务端使用的CA是匹配的,如果提示无法识别CRL签发者证书,就说明CRL来源和当前CA不一致,必须用对应CA的私钥重新生成符合要求的CRL文件。

CRL文件的系统权限与路径可访问性检查

不少运维写完配置项重启OpenVPN之后直接遇到服务启动失败的问题,排查下来大多是CRL的路径或者系统权限不符合要求。OpenVPN服务默认不会以root身份运行,大多使用nobody或者专属的openvpn系统用户身份启动,如果把CRL文件放在/root这类普通用户没有访问权限的目录下,哪怕手动修改文件权限为777,也可能被系统安全上下文拦截,导致服务进程无法读取文件内容。

检查时可以先手动切换到OpenVPN对应的运行用户身份,尝试直接cat CRL文件的全路径,如果能正常输出CRL的文本内容,就说明读权限符合要求。同时要确认OpenVPN配置文件里的crl-verify参数填写的是绝对路径,不要使用相对路径,很多场景下OpenVPN启动时的工作目录和配置文件所在目录不一致,相对路径会直接导致服务找不到CRL文件,触发启动报错。

OpenVPN服务端配置项的版本兼容性校验

部分运行多年的旧服务器上还保留着2.3版本之前的老旧OpenVPN程序,这类旧版本的CRL校验逻辑存在已知缺陷,不支持加载合并了多个吊销段的CRL文件,甚至会在遇到不符合格式的CRL时完全静默忽略所有吊销规则,不会输出任何报错信息,运维人员以为配置已经生效,实际上被吊销的客户端证书依然可以正常连接VPN。

配置前先执行openvpn --version命令查看当前运行的程序版本,VPN加速器如果版本低于2.4稳定版,建议先完成程序升级再做CRL相关配置。同时要检查服务端配置文件里没有写入client-cert-not-validate这类跳过客户端证书校验的参数,如果开启了这个参数,OpenVPN会完全跳过所有证书合法性检查,哪怕CRL配置完全正确也不会走吊销校验逻辑。

CRL更新周期与时间有效性前置确认

有不少运维遇到过全量合法VPN客户端都无法连接的故障,排查到最后发现是CRL文件过了有效期,OpenVPN默认的安全规则会直接拒绝加载过期的CRL,同时拒绝所有客户端的连接请求,星星哪怕是没有被吊销的合法证书也无法通过校验。这类故障大多是生成CRL时没有注意更新周期,生成完之后长期忘记更新CRL文件导致的。

正式配置前先用openssl命令查看CRL里的下次更新字段,确认更新时间是在未来的合理周期内,同时要提前配置好CRL的自动更新脚本,避免人工遗忘导致CRL过期。另外还要确认OpenVPN服务端的系统时间没有异常偏移,如果系统时间被误改到CRL的发布时间之前,OpenVPN也会判定CRL的时间逻辑无效,直接拒绝加载。

客户端证书吊销标记的前置一致性检查

还有一类隐性问题是CRL文件本身生成不符合规范,明明已经在CA侧标记了某张客户端证书为吊销状态,但是生成的CRL里没有对应的条目,最终导致被吊销的证书依然可以正常连接VPN。这类问题大多是生成CRL时使用的openssl配置文件没有开启crl_ext扩展,生成的CRL缺少标准的扩展字段,部分开启严格校验模式的OpenVPN会直接忽略这类CRL里的所有吊销条目。

配置CRL之前可以先把CRL文件导出为明文文本格式,VPN加速器逐一核对之前标记吊销的所有客户端证书的序列号,确认所有需要吊销的条目都已经出现在CRL的吊销列表里,没有遗漏,同时确认每个吊销条目都带有合法的扩展标记,避免生成的CRL是空列表或者缺少必要的吊销字段,配置完成后完全达不到预期的访问控制效果。

所有上述前提项全部校验通过之后,再重启OpenVPN服务完成配置,之后可以用已经标记吊销的客户端证书尝试发起连接,正常情况下服务端会直接返回证书已吊销的报错信息,拒绝该客户端的连接请求。如果此时被吊销的客户端依然可以正常接入,就可以回头按照前面的校验项逐项回溯排查,绝大多数配置不生效的问题都可以快速定位到根因。

远程办公编辑组
围绕办公网络、视频会议和远程访问,说明连接准备与常见排查步骤。
查看更多文章
配置入门

从一个连接问题开始

遇到服务器监听地址错误相关问题,可从“由管理员检查需要公开的实际服务监听”开始阅读。不能因为一个本地测试通过就认定公网入口可用,需要结合具体环境判断。