云服务器签证书过期
整体结论
- 根因是云服务器
server.crt过期,导致 OpenVPN 客户端无法稳定建立连接。 - 旧
ca.key密码找不回,所以最终采用了“重建 CA + 重签服务端/客户端证书”的方案。 - 最终恢复结果:
- 云服务器 OpenVPN 恢复
- 上海路由器恢复,客户端证书是
clientSooyan - 苏州路由器恢复,客户端证书是
clientIntellmedic
一、问题定位过程
- 先看服务端日志,发现关键报错:
WARNING: Your certificate has expired!openvpn.service: start operation timed out
- 检查证书有效期,确认:
/etc/openvpn/ca.crt未过期/etc/openvpn/server.crt已过期
- 查找
ca.key:/etc/openvpn下没有- 找到
/usr/packages/EasyRSA-3.1.7/pki/private/ca.key
- 但旧
ca.key需要密码,且密码忘了,无法直接续签旧证书。
二、服务端处理流程
- 旧
server.crt过期,旧 CA 私钥密码不可用,所以重建新 CA。 - 新建目录:
/etc/openvpn/pki-new
- 生成新 CA:
- 新
ca.crt - 新
ca.key
- 新
- 用现有
server.key重新签发新的server.crt - 验证新证书链是否可用:
openssl verify ... : OK
- 将新证书替换到线上:
/etc/openvpn/ca.crt/etc/openvpn/server.crt
三、服务端 systemd 问题
- 机器上没有
openvpn@server.service,只有自定义的openvpn.service openvpn.service原来是:Type=notify
- 但当前 OpenVPN 构建方式没有正确向 systemd 发
READY=1 - 所以改为:
Type=simple- 可加
TimeoutStartSec=0
- 之后
openvpn.service不再被 systemd 超时杀掉。
四、客户端证书重签
因为重建了 CA,所以所有客户端旧证书理论上都失效,需要重签。
已重签的客户端:
- 上海:
clientSooyan.crt - 苏州:
clientIntellmedic.crt
如后续还要重签:
clientTest.crt
规则是:
- 保留原
.key - 用新 CA 重签新的
.crt - 客户端侧更新:
ca.crt- 对应客户端新的
.crt
五、两台路由器对应关系
- 上海路由器:
- 配置文件:
/etc/openvpn/clientSooyan.conf - 客户端证书:
clientSooyan.crt - 客户端私钥:
clientSooyan.key
- 配置文件:
- 苏州路由器:
- 配置文件:
/etc/openvpn/clientIntellmedic.conf - 客户端证书:
clientIntellmedic.crt - 客户端私钥:
clientIntellmedic.key
- 配置文件:
六、路由器侧实际做了什么
除了替换证书文件,还做了这些:
- 上传新文件到
/etc/openvpn/ca.crt- 对应客户端
.crt
- 保留原
.key - 保留
ta.key - 因为配置使用的是相对路径,所以补了软链接到
/etc/ - 重启 OpenVPN
- 用前台命令人工验证握手成功
七、为什么补软链接
路由器配置里写的是相对路径,比如:
ca ca.crtcert clientSooyan.crtkey clientSooyan.keytls-auth ta.key 1
而后台启动时工作目录会变成 /etc/,所以 OpenVPN 实际找的是:
/etc/ca.crt/etc/clientSooyan.crt/etc/clientSooyan.key/etc/ta.key
真实文件在 /etc/openvpn/ 下,所以通过软链接兼容旧配置,不改 .conf。
上海补的软链接:
ln -sf /etc/openvpn/ca.crt /etc/ca.crt
ln -sf /etc/openvpn/clientSooyan.crt /etc/clientSooyan.crt
ln -sf /etc/openvpn/clientSooyan.key /etc/clientSooyan.key
ln -sf /etc/openvpn/ta.key /etc/ta.key
苏州补的软链接:
ln -sf /etc/openvpn/ca.crt /etc/ca.crt
ln -sf /etc/openvpn/clientIntellmedic.crt /etc/clientIntellmedic.crt
ln -sf /etc/openvpn/clientIntellmedic.key /etc/clientIntellmedic.key
ln -sf /etc/openvpn/ta.key /etc/ta.key
八、路由器恢复验证方式
前台验证命令:
上海:
openvpn --config /etc/openvpn/clientSooyan.conf --verb 4
苏州:
openvpn --config /etc/openvpn/clientIntellmedic.conf --verb 4
成功标志:
VERIFY OKPeer Connection InitiatedInitialization Sequence Completed
隧道确认:
- 上海
tun0地址:10.9.0.2 - 苏州
tun0地址:10.9.0.3
九、互通问题的最终结论
- 之前互相不通,不是证书又坏了。
- 真正原因是测试时两端并没有同时稳定在线。
- 当前台双端保持在线时,已经恢复互通。
也就是说:
- VPN 本身已修好
- 旧
ccd、client-to-client这套配置本身可用 - 问题重点不再是证书,而是后台接管是否稳定
十、如何让路由器后台启动更稳
推荐固定做法:
- 保留软链接
- 开启开机自启
- 用
stop + start代替直接restart - 用
ps和ifconfig tun0检查状态
常用命令:
/etc/init.d/openvpn enable
/etc/init.d/openvpn stop
sleep 2
/etc/init.d/openvpn start
sleep 3
ps w | grep [o]penvpn
ifconfig tun0
十一、关于 CA 私钥是否加密
现状:
- 新建的
ca.key默认是无密码的
结论:
- 不加密也能正常用
- 但安全性较低
- 只加密
ca.key,不会影响现有 OpenVPN 连接,也不需要更新任何路由器
不建议加密这些:
server.key- 各客户端
.key
因为会影响自动启动和自动重连。
十二、给 ca.key 加密的最短流程
可以用 Linux 随机密码生成后加密 ca.key,并备份。
作用:
- 只影响以后签新证书时要提供密码
- 不影响现网服务
- 不需要更新路由器
十三、以后再换证书的规则
分两类:
-
重签
server.crt- 路由器通常不用更新
- 前提是
ca.crt不变
-
重签客户端证书
- 对应客户端必须更新新的
.crt - 同时要保证它使用的是当前新的
ca.crt
- 对应客户端必须更新新的
如果以后 clientTest 过期:
- 用
clientTest.key重签新的clientTest.crt - 给对应设备更新:
ca.crtclientTest.crt
十四、两年证书能不能改成十年
- 已经签发出来的 2 年证书,不能“原地改成 10 年”
- 想变长,只能重新签一张新的证书
规则:
server.crt重新签成 10 年,客户端一般不用更新clientSooyan.crt、clientIntellmedic.crt、clientTest.crt若改成 10 年,对应路由器必须更新新的.crt
十五、当前建议
- 先不要再动现网核心配置
- 保留当前能跑通的配置
- 重点做好备份
必须备份的关键文件:
- 云服务器:
/etc/openvpn/ca.crt/etc/openvpn/server.crt/etc/openvpn/pki-new/private/ca.key/etc/openvpn/client/clientSooyan.crt/etc/openvpn/client/clientIntellmedic.crt/etc/openvpn/client/clientTest.crt
- 路由器:
/etc/openvpn/ca.crt- 对应客户端
.crt - 对应客户端
.key ta.key
十六、最终一句话版
- 根因:服务端证书过期,旧 CA 私钥密码丢失
- 处理:重建 CA,重签服务端和客户端证书
- 路由器侧:更新
ca.crt和对应客户端.crt,补软链接,重启并前台验证 - 现状:上海和苏州都已恢复
- 后续:只要 CA 不变,重签服务端证书通常不需要动路由器;重签客户端证书则必须更新对应路由器
如果你要,我下一条可以继续整理成一份“最终运维手册版”
证书到期怎么处理上海怎么换苏州怎么换clientTest 怎么换哪些文件必须备份故障排查顺序
静,静,静

浙公网安备 33010602011771号