云服务器签证书过期

整体结论

  • 根因是云服务器 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.crt
  • cert clientSooyan.crt
  • key clientSooyan.key
  • tls-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 OK
  • Peer Connection Initiated
  • Initialization Sequence Completed

隧道确认:

  • 上海 tun0 地址:10.9.0.2
  • 苏州 tun0 地址:10.9.0.3

九、互通问题的最终结论

  • 之前互相不通,不是证书又坏了。
  • 真正原因是测试时两端并没有同时稳定在线。
  • 当前台双端保持在线时,已经恢复互通。

也就是说:

  • VPN 本身已修好
  • ccdclient-to-client 这套配置本身可用
  • 问题重点不再是证书,而是后台接管是否稳定

十、如何让路由器后台启动更稳
推荐固定做法:

  • 保留软链接
  • 开启开机自启
  • stop + start 代替直接 restart
  • psifconfig 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.crt
    • clientTest.crt

十四、两年证书能不能改成十年

  • 已经签发出来的 2 年证书,不能“原地改成 10 年”
  • 想变长,只能重新签一张新的证书

规则:

  • server.crt 重新签成 10 年,客户端一般不用更新
  • clientSooyan.crtclientIntellmedic.crtclientTest.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 怎么换
  • 哪些文件必须备份
  • 故障排查顺序
posted @ 2026-08-17 16:51  爱晒太阳的懒猫。。  阅读(9)  评论(0)    收藏  举报