对于大量采用OpenVPN搭建远程办公接入通道的企业来说,证书体系是整个接入安全的核心防线,而证书吊销列表CRL则是拦截被盗证书、离职员工未回收证书的关键机制。不少运维团队日常巡检时经常忽略CRL的状态校验,轻则出现违规人员绕过VPN权限管控接入内部网络的安全漏洞,重则出现所有远程用户无法正常连接的大面积故障。本文就围绕OpenVPN证书吊销列表:日常检查方法这个核心需求,拆解不同场景下可直接落地的实操步骤,覆盖从配置前提到运行验证的全流程。
检查前的配置前提确认
正式开展CRL检查之前,首先要确认OpenVPN服务端的CRL关联配置没有失效。你可以登录部署OpenVPN的Linux服务器,找到服务端的server.conf主配置文件,检索crl-verify字段后面标注的文件路径,常见的默认路径一般是/etc/openvpn/crl/crl.pem,先确认这个路径指向的文件真实存在,而不是迁移配置时遗留的无效路径。如果配置里根本没有crl-verify相关字段,说明当前OpenVPN服务根本没有启用CRL校验,所有已经被吊销的证书都能正常接入,需要先补全配置再做后续检查。
接下来要确认CRL的签发主体和服务端信任的根CA完全匹配。你可以用openssl x509 -in 根CA证书路径/ca.crt -noout -issuer命令,输出根CA的签发者标识信息,再用openssl crl -in CRL文件路径/crl.pem -noout -issuer命令输出CRL的签发者信息,两者的字段内容必须完全一致,如果CRL是子CA签发的,会导致所有合法客户端证书都被服务端误拦截。
基础文件属性层面的日常检查步骤
最基础的日常巡检第一步,是检查CRL文件的最后更新时间,执行openssl crl -in /etc/openvpn/crl/crl.pem -noout -lastupdate命令,就能看到这个CRL文件最后一次被修改的时间点。你可以把这个时间和内部最近一次吊销证书的操作记录做比对,如果上周刚给离职员工做了证书吊销操作,这里显示的最后更新时间还停留在上个月,说明之前的吊销操作没有成功写入CRL文件,违规证书仍然处于可使用状态。
第二步要检查CRL自身的剩余有效期,执行openssl crl -in /etc/openvpn/crl/crl.pem -noout -nextupdate命令,就能看到当前CRL的过期时间。绝大多数场景下运维配置的CRL有效期不会超过30天,如果临近过期还没有生成新的CRL,OpenVPN服务端会默认拒绝所有客户端的接入请求,直接导致所有远程办公用户无法连接内部网络,这是OpenVPN运维的高频故障点。
第三步可以直接导出当前CRL里所有已经被吊销的证书序列号,执行openssl crl -in /etc/openvpn/crl/crl.pem -noout -text | grep "Serial Number"命令,就能列出所有被拉黑的证书编号,把这个列表和企业内部的证书吊销登记台账做逐一比对,确认所有违规、离职、疑似被盗的证书序列号都在列表中,没有出现遗漏。
运行时生效状态的验证方法
本地文件检查没有问题之后,还要确认OpenVPN服务端确实已经加载了最新的CRL规则,没有因为配置重载失败导致旧规则仍然在运行。你可以查看OpenVPN服务的系统日志,CentOS系统默认路径是/var/log/messages,Ubuntu系统默认路径是/var/log/syslog,检索和crl相关的日志条目,如果看到“CRL loaded successfully”的提示,说明当前CRL加载状态正常,如果出现CRL格式错误的相关报错,说明新生成的CRL文件存在格式问题,需要重新通过CA工具签发生成。
接下来要做实际的接入验证,找一台闲置的测试客户端,导入已经登记在CRL吊销列表里的旧证书,尝试连接OpenVPN服务端,正常情况下连接过程会直接被服务端拒绝,服务端日志里会出现“certificate revoked”的相关提示,说明CRL的校验逻辑确实在正常生效。验证过程不要使用正常业务用户的证书测试,避免影响正常员工的远程接入使用,测试完成之后要及时把测试用的违规证书从测试客户端里删除,避免后续出现误操作。
常见检查误区排查
不少运维团队会犯的典型错误,就是只检查主OpenVPN节点的CRL状态,忽略了集群热备或者多负载节点的CRL同步。如果你部署了多台OpenVPN接入节点做高可用,要逐个登录每一个节点检查CRL文件的更新时间和内容,不能只操作主节点之后就默认所有备节点都自动同步了最新CRL,不然会出现部分用户接入时,违规证书可以绕过校验的安全漏洞。
还有很多人会把CRL检查和证书有效期检查混为一谈,部分证书本身还在合法有效期内,但是因为设备遗失、人员转岗等原因已经被提前吊销,这时候只检查证书有效期的规则是无法拦截这类证书的,必须靠CRL的校验逻辑实现拦截。日常巡检的时候要把CRL专项检查和普通证书有效期检查分开,建立独立的巡检台账,避免出现检查遗漏。
把这套OpenVPN证书吊销列表的日常检查动作加入每周的运维巡检清单,不需要复杂的自动化脚本,手动执行所有命令的耗时也不会超过十分钟,对于绝大多数中小规模的企业OpenVPN接入场景完全够用,能避免绝大多数因为CRL失效导致的安全漏洞或者业务中断问题。
