1️⃣ 前提条件
-
旧服务器上已经安装并使用了
acme.sh并且有有效的证书。 -
新服务器已经安装了
acme.sh(如果未安装,可先安装)。 -
两台服务器可以通过安全方式传输文件(如
scp)。
2️⃣ 安装 acme.sh(新服务器)
在新服务器执行:
curl https://get.acme.sh | sh
# 或者使用官方推荐的方式
# git clone https://github.com/acmesh-official/acme.sh.git
# cd acme.sh
# ./acme.sh --install
安装完成后,acme.sh 通常在:
~/.acme.sh/acme.sh
3️⃣ 导出旧服务器证书
在旧服务器上执行:
# 导出 acme.sh 配置(含账号和证书)
acme.sh --backup ~/acme_backup.tar
这条命令会生成一个 acme_backup.tar 文件,里面包含:
-
所有域名证书
-
acme.sh 配置和账号信息
-
自动续期脚本
⚠️ 注意:一定要把这个备份文件安全地传输,不要泄露。
4️⃣ 将备份文件传到新服务器
假设新服务器 IP 为 NEW_SERVER_IP,用户名为 user:
scp ~/acme_backup.tar user@NEW_SERVER_IP:~
5️⃣ 在新服务器恢复 acme.sh
登录新服务器后,执行:
# 恢复备份
acme.sh --restore ~/acme_backup.tar
恢复后,你可以查看已有的证书:
acme.sh --list
确认所有证书和域名都已经导入。
6️⃣ 测试续期(可选)
为了确保自动续期正常,可以先手动测试:
acme.sh --renew-all --dry-run
如果一切正常,输出会显示“success”。
7️⃣ 配置自动续期(可选)
acme.sh 默认会在用户 crontab 中自动设置续期任务,你可以查看:
crontab -l
如果没有,可以手动添加:
0 0 * * * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" > /dev/null
8️⃣ 使用证书
如果你之前使用 nginx、apache 或其他服务,可以直接引用恢复后的证书:
~/.acme.sh/<your_domain>/fullchain.cer
~/.acme.sh/<your_domain>/<your_domain>.key
可以在
acme.sh --install-cert时自动安装到指定路径。
9️⃣ 可选:迁移到系统级证书目录
如果你希望证书统一管理,可以执行:
acme.sh --install-cert -d example.com \
--key-file /etc/ssl/private/example.com.key \
--fullchain-file /etc/ssl/certs/example.com.crt \
--reloadcmd "systemctl reload nginx"
这样在续期后会自动替换并重载服务。
✅ 总结
迁移流程核心是:
-
备份旧服务器 acme.sh 数据。
-
传输到新服务器。
-
恢复数据。
-
验证证书列表和续期功能。
-
更新服务配置引用新证书。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
