You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器Let's Encrypt证书续期后自动复制至指定目录的最优方案

解决Let's Encrypt证书续期后自动同步证书的方案

方法一:使用Certbot的deploy钩子(推荐)

Certbot本身支持钩子脚本,证书成功续期部署后会自动触发指定脚本,比定时轮询更精准,避免误操作。

  1. 创建同步脚本,比如/usr/local/bin/sync-le-cert.sh:
#!/bin/bash
# 源证书目录(Let's Encrypt默认路径)
SOURCE_DIR="/etc/letsencrypt/live/你的域名"
# 目标目录(opt下应用所需的证书路径)
TARGET_DIR="/opt/你的应用/certs"

# 确保目标目录存在
mkdir -p "$TARGET_DIR"

# 复制证书文件(根据应用需求调整,比如fullchain.pem、privkey.pem)
cp -f "$SOURCE_DIR/fullchain.pem" "$TARGET_DIR/"
cp -f "$SOURCE_DIR/privkey.pem" "$TARGET_DIR/"

# 可选:重启应用加载新证书(替换为你的服务名)
# systemctl restart 你的应用服务名
  1. 给脚本添加执行权限:
chmod +x /usr/local/bin/sync-le-cert.sh
  1. 配置Certbot永久生效:
    编辑/etc/letsencrypt/cli.ini,添加以下内容:
deploy-hook = /usr/local/bin/sync-le-cert.sh

或者手动续期时临时指定:

certbot renew --deploy-hook "/usr/local/bin/sync-le-cert.sh"

方法二:用inotifywait监听目录变化

如果必须通过检测目录更新触发同步,可以使用inotify-tools工具监听证书目录的修改事件。

  1. 安装inotify-tools:
# Debian/Ubuntu系统
apt install inotify-tools -y
# RHEL/CentOS系统
yum install inotify-tools -y
  1. 创建监听脚本/usr/local/bin/watch-le-cert.sh:
#!/bin/bash
SOURCE_DIR="/etc/letsencrypt/live/你的域名"
TARGET_DIR="/opt/你的应用/certs"
mkdir -p "$TARGET_DIR"

# 监听目录的创建、修改事件
inotifywait -m -e create -e modify "$SOURCE_DIR" | while read -r directory events filename; do
    # 仅处理.pem格式的证书文件
    if [[ "$filename" =~ \.pem$ ]]; then
        cp -f "$SOURCE_DIR/$filename" "$TARGET_DIR/"
        # 可选:重启应用
        # systemctl restart 你的应用服务名
    fi
done
  1. 添加执行权限:
chmod +x /usr/local/bin/watch-le-cert.sh
  1. 设置为后台服务(用systemd):
    创建/etc/systemd/system/le-cert-watcher.service文件:
[Unit]
Description=Watch Let's Encrypt certs and sync to app directory
After=network.target

[Service]
ExecStart=/usr/local/bin/watch-le-cert.sh
Restart=always
User=root

[Install]
WantedBy=multi-user.target
  1. 启动并设置开机自启:
systemctl daemon-reload
systemctl start le-cert-watcher.service
systemctl enable le-cert-watcher.service

注意事项

  • 替换脚本中的你的域名和你的应用为实际值;
  • 确认应用所需的证书文件名,部分应用可能需要重命名证书(比如将privkey.pem改为server.key);
  • 若应用需重启才能加载新证书,务必在脚本中添加重启命令,否则仍会因旧证书导致崩溃;
  • 优先使用Certbot钩子方案,仅在续期成功时触发,无多余无效操作。

内容的提问来源于stack exchange,提问作者DevOps_N_Training

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:43:19