跳到主要内容
lanzai.co
返回

acme.sh 安装与 Cloudflare 域名自动续签

acme.sh 是纯 shell 写的 ACME 客户端,配合 Cloudflare DNS API 可以做到全自动申请和续签,包括泛域名证书。

安装

curl https://get.acme.sh | sh -s email=you@example.com
source ~/.bashrc
acme.sh --version

获取 Cloudflare API Token

  1. 登录 Cloudflare → My Profile → API Tokens → Create Token
  2. 模板选 “Edit zone DNS”,权限设为 Zone:DNS:Edit,限定到你的域名
  3. 拿到 CF_Token 和 CF_Zone_ID(域名 Overview 页面右侧有 Zone ID)

设置环境变量

export CF_Token="你的token"
export CF_Zone_ID="你的zone_id"

申请证书

签发单个域名:

acme.sh --issue --dns dns_cf -d blog.example.com

签发泛域名(自动包含根域):

acme.sh --issue --dns dns_cf -d '*.example.com' -d example.com

泛域名只能通过 DNS 方式验证,不能用 HTTP 方式。

安装证书到目标目录

acme.sh --install-cert -d '*.example.com' \
  --key-file /etc/ssl/example.com/privkey.pem \
  --fullchain-file /etc/ssl/example.com/fullchain.pem \
  --reloadcmd "systemctl reload nginx"

验证自动续签

acme.sh --cron --home "$HOME/.acme.sh"
acme.sh --list

acme.sh 已内置 crontab 任务,每天检查,到期前 30 天自动续签。

查看/更新

acme.sh --info -d '*.example.com'   # 查看证书信息
acme.sh --upgrade                   # 升级自身
acme.sh --update-account            # 更新注册邮箱

注意事项


分享这篇文章:

上一篇
Astro 博客部署到服务器(nginx)