Wi-Fi 与路由器

OpenVPN服务端证书备份与恢复实用操作全指南

很多运维人员在部署OpenVPN服务后,往往忽略服务端证书的定期备份,一旦服务器系统盘故障、误操作删除证书文件,会直接导致所有已签发的客户端证书全部失效,重新搭建整套CA体系不仅耗时,还会让所有远程接入用户都需要重新配置客户端文件,本篇指南就围绕OpenVPN服务端证书的备份与恢复全流程,梳理符合生产环境要求的实操步骤,避开常见的操作误区。

操作前的配置前提确认

在启动备份流程之前,你首先要确认当前OpenVPN服务端的证书体系存储路径,大部分基于easy-rsa生成的默认环境,shadowrocket证书相关文件都会存放在/etc/openvpn/server或者easy-rsa的工作目录下,不要直接复制系统全局随机生成的零散证书文件,要定位完整的CA根证书、服务端公私钥、DH参数文件、CRL吊销列表这几类核心文件。

备份前不需要特意停止OpenVPN服务,正常运行状态下的证书文件都是被服务端只读加载的,直接读取不会出现文件损坏的问题,不过要确认当前没有正在执行的新客户端证书签发任务,避免备份过程中刚好生成新文件导致备份包遗漏。

网络设备:OpenVPN服务端证书:备份 - shadowrocket

运维人员在正式生产环境下核查OpenVPN证书存储路径,完成备份前的配置确认步骤。

标准OpenVPN服务端证书备份实操步骤

最稳妥的备份方式不是单独导出几个crt后缀的零散文件,而是把完整的easy-rsa工作目录整个打包,这个目录里不仅包含服务端自身用到的证书,还保存了根CA的私钥、所有已签发客户端的证书记录,后续恢复的时候可以直接沿用原有体系,不需要重新给用户分发配置文件。

打包完成之后要做基础校验,解压备份压缩包,核对里面的server.crt、server.key、ca.crt、dh.pem这几个核心文件的修改时间,确认和当前OpenVPN服务端实际加载的文件属性一致,避免出现空备份、损坏备份的情况。

备份文件的存储要符合隐私边界要求,因为备份包里包含根CA私钥,一旦泄露攻击者可以随意签发伪造的合法客户端证书接入你的内部网络,所以备份包不能明文存放在公网可访问的云盘里,最好加密之后离线存储在专用的运维加密介质中。

故障场景下的证书恢复操作流程

如果是原有OpenVPN服务器系统重装、证书误删的场景,你首先要在新部署的同版本OpenVPN环境下,先停止openvpn-server服务,shadowrocket不要直接启动默认生成的空证书目录,避免产生文件路径冲突覆盖后续导入的备份文件。

把之前的加密备份包解密之后,直接覆盖到对应路径下的easy-rsa工作目录和服务端证书加载目录,之后修改所有证书和私钥文件的权限,把私钥文件的权限设置为仅root用户可读,避免出现权限过大导致服务启动报错。

完成文件覆盖之后,先执行OpenVPN服务端的配置检查命令,确认没有证书文件不存在、密钥不匹配的报错,再启动OpenVPN服务,小火箭之后找一台之前正常接入的客户端尝试连接,不需要修改任何客户端配置就能正常连通,就说明恢复流程生效。

常见操作误区与故障定位方法

很多运维人员备份的时候只单独导出服务端的运行证书,漏掉了根CA私钥和CRL吊销列表,后续如果有离职人员的旧客户端需要吊销权限的时候,根本无法生成新的吊销列表,只能整套CA体系全部推倒重建,反而增加了更多工作量。

还有人恢复证书的时候,直接把备份的证书文件放到了和原路径不同的自定义目录下,但是没有同步修改OpenVPN服务端配置文件里的证书路径指向,导致服务启动之后加载的还是新生成的空证书,客户端连接的时候会出现证书不被信任的报错。

如果恢复之后出现部分旧客户端无法接入的情况,不要第一时间判定备份文件损坏,可以先检查服务端加载的ca.crt文件的哈希值,和本地客户端存储的根证书哈希值做比对,大概率是恢复的时候误替换了根证书文件导致的信任链断裂。

日常运维中建议每新增少量客户端证书就做一次增量备份,不要间隔几个月才做全量备份,避免中间新增的客户端签发记录没有被同步保存到备份包里,出现故障之后无法追溯所有接入设备的证书状态。

隐私与安全编辑组 | shadowrocket
隐私与安全编辑组
内容编辑

介绍浏览器隐私、账号保护与数据传输,区分工具能力和使用边界。

查看更多文章
配置入门

找到适合当前设备的指南

遇到变更规则的最小影响范围相关问题,可从“一次只改明确规则并对照前后结果”开始阅读。增加很多规则并不能自动提高连接质量,需要结合具体环境判断。