使用 Certbot 自动生成/更新证书 + 同步到其他机器

前提:主服务器 A 用 certbot + DNS-01 自动续期,证书在机器 A 的 /etc/letsencrypt/live/xxx.com/ 路径下
主流程:

certbot renew
        ↓
deploy hook 被触发
        ↓
自动 rsync 到 B
        ↓
远程 reload nginx

1、确保 A 可以免密码访问 B

(如果 A 机器上没有任何 key )使用 ssh-keygen 在机器 A 上创建 key
然后把生成的公钥放到B的 ~/.ssh/authorized_keys 文件中(可以省掉下面的 ssh-copy-id 操作)

ssh-copy-id root@x.x.x.x (B的ip地址)

测试一下:

ssh root@x.x.x.x

2、写一个脚本:自动同步证书到指定机器

vi /root/sync_cert.sh
#!/bin/bash

DOMAIN="xxx.com"
TARGET="root@x.x.x.x"

scp -r /etc/letsencrypt/live/$DOMAIN $TARGET:/etc/letsencrypt/live/
scp -r /etc/letsencrypt/archive/$DOMAIN $TARGET:/etc/letsencrypt/archive/

ssh $TARGET "nginx -t && systemctl reload nginx"

给上面的脚本赋予权限:

chmod +x /root/sync_cert.sh

然后让 certbot 每次自动更新证书之后,会自动执行上面的同步脚本(这是 certbot 现成的机制 deploy hook):

vi /etc/letsencrypt/renewal-hooks/deploy/sync.sh

# 只写入一行内容
/root/sync_cert.sh
posted @ 2026-03-04 19:42  江南烟雨梦  阅读(72)  评论(0)    收藏  举报