步骤 1: 安装 acme.sh

首先,确保 acme.sh 已经安装在您的系统中。

Bash

# 执行安装脚本。这里的 email 用于接收续期通知。
curl https://get.acme.sh | sh -s email=your_email@example.com

# 重新加载您的 Shell 配置文件,使 'acme.sh' 命令生效
source ~/.bashrc  # 或 source ~/.zshrc,根据您的 Shell 环境选择

安装完成后,acme.sh 会自动在 /root/.acme.sh(如果是 root 用户安装)或 ~/.acme.sh 下创建相关文件,并设置好自动续期的 Cron Job

步骤 2: 配置 DNS API 凭证

这是 DNS 验证的关键步骤。您需要设置环境变量,让 acme.sh 可以通过 API 自动登录您的 DNS 服务商(例如 Cloudflare)来创建和删除 TXT 记录。

以 Cloudflare (CF) 为例:

  • API Token 方式 (推荐):使用更安全的 API Token 和 Account ID。

    Bash

    export CF_Token="YOUR_CLOUDFLARE_API_TOKEN"
    export CF_Account_ID="YOUR_CLOUDFLARE_ACCOUNT_ID"
    
  • Global API Key 方式 (不推荐)

    Bash

    export CF_Key="YOUR_GLOBAL_API_KEY"
    export CF_Email="YOUR_CLOUDFLARE_EMAIL"
    

📌 注意: 请根据您的 DNS 服务商选择正确的环境变量(例如阿里云是 Ali_KeyAli_Secret)。

步骤 3: 申请证书

我们以申请通配符证书(*.example.com)和根域名证书(example.com)为例。

Bash

acme.sh --issue \
-d example.com \
-d *.example.com \
--dns dns_cf \
--server letsencrypt
  • --issue: 证书申请命令。

  • -d: 指定域名。

  • --dns dns_cf: 指定使用 Cloudflare DNS 插件进行验证。

  • --server letsencrypt: 指定使用 Let's Encrypt CA。

运行成功后,您的证书文件将位于 ~/.acme.sh/example.com_ecc/ 目录下。

步骤 4: 自动化续期配置(核心)

acme.sh 在安装时已经为您创建了定时任务 (cron job),负责在后台检查证书是否需要续期。但我们还需要配置一个 部署钩子 (Deploy Hook),让它在续期成功后能自动更新您的 Web 服务器(如 Caddy 或 Nginx)。

1. 检查 Cron Job

运行以下命令确认自动续期任务已存在:

Bash

crontab -l | grep acme.sh
# 应该能看到类似下面的输出:
# 14 19 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null