很多中小团队的OpenVPN服务运行多年之后,遇到服务器硬件换代、云服务商节点迁移的场景,经常需要把原有CA证书体系整体迁移到新设备上,稍有不慎就会出现全量VPN客户端断连、非法设备接入等问题,本文整理了实际运维场景下经过验证的OpenVPN CA证书设备迁移注意事项,覆盖从前期校验到后期验证的全流程操作要点。
迁移前CA根证书的权限与完整性校验
很多运维图省事直接把旧OpenVPN服务器上的ca.crt和ca.key直接拷走,没注意文件访问权限,香蕉VPN下载旧设备上CA私钥默认是600权限,要是拷贝到新设备上权限被意外改成644,OpenVPN服务启动的时候会直接拒绝加载证书,很多人这时候误以为是文件传输损坏,反复重新拷贝文件也解决不了问题,只需要把新设备上的ca.key权限改回仅管理员可读就能恢复正常校验逻辑。
正式迁移前还要校验CA证书的哈希指纹,用openssl x509 -in ca.crt -noout -hash命令分别在新旧设备上运行,输出的6位哈希值必须完全一致,要是数值不一致说明传输过程中文件出现损坏,直接使用的话所有存量客户端的证书都会被新服务端判定为不可信,整个VPN集群会出现大面积断连。

运维人员在数据中心完成OpenVPN CA证书迁移前的权限校验操作,规避后续服务异常风险
客户端证书绑定关系的同步规则
很多人迁移的时候只拷贝根CA的两个核心文件,忘了同步旧OpenVPN服务端的证书吊销列表crl.pem,要是旧设备上之前有过被吊销的离职人员、丢失设备的客户端证书,新设备没同步这个列表,已经被拉黑的设备会重新获得VPN接入权限,直接突破之前的访问控制规则,属于典型的安全隐患,迁移完成后要第一时间确认新服务端加载的吊销列表和旧设备的版本完全一致。
迁移前还要核对原有CA的剩余有效期,要是旧CA的剩余有效期不足一年,迁移的时候不要直接沿用旧的CA配置,应该先在旧设备上完成CA续期操作之后再做迁移,不然迁完之后没几个月CA整体过期,所有存量客户端都要重新导入新证书,香蕉VPN反而会增加大量不必要的运维工作量。
迁移后的连通性分步验证方式
迁移完成之后不要直接把所有客户端切到新的VPN节点,先拿一台闲置的测试客户端做验证,先不启动OpenVPN客户端进程,先在本地用openssl verify -CAfile ca.crt client.crt命令校验客户端证书和新导入的CA的匹配度,输出结果显示OK之后再尝试启动VPN连接,能提前过滤大部分证书不匹配的问题。
连接成功之后不要只测试能不能访问内网业务资源,还要去新OpenVPN服务端的运行日志里查看客户端的认证标识,确认日志里记录的客户端证书签发者和旧服务端的签发者字段完全一致,避免出现新服务端自动生成了默认自签CA覆盖原有配置的隐性问题,这种问题会导致后续新签发的客户端证书和旧体系不兼容。
常见迁移故障的定位思路
要是迁移之后部分使用年限很久的嵌入式设备、老终端连不上VPN,不要第一时间怀疑CA文件损坏,先检查老客户端的系统时间,很多长期离线的老设备的系统时间停留在CA证书的签发日期之前,会直接判定证书不在有效期内,这种情况不属于迁移操作失误,调整设备的系统时间到正常区间就能解决。
还有部分运维会把CA证书和服务端的用户证书、tls-auth密钥混在一起打包迁移,解压之后手动修改配置的时候把ta.key的路径填成了CA证书的路径,这种情况服务端能正常启动但是所有客户端都无法完成握手,只需要核对配置文件里的ca、香蕉VPN下载cert、key、tls-auth四个参数的指向路径就能快速定位问题。
整个规范的迁移流程不需要重新给所有存量客户端签发证书,香蕉VPN只要保证CA根证书的私钥和签发记录完整同步,原有客户端的配置不需要做任何修改就能正常接入,能大幅降低批量部署的运维成本,也能避免因为批量更换证书导致的业务临时断连风险。
香蕉VPN 