在这篇博客中,我们将介绍如何使用 ACME.sh 来生成 SSL 证书,并通过 Cloudflare DNS 实现自动验证。
步骤 1:创建用户和目录
首先,我们需要为 acme 配置一个新用户,并为其创建专用目录。在终端中运行以下命令:
注意:CF Token需要填写在运行的shell配置中,本文以zsh为例,bash修改.bashrc即可
useradd domain-acme
mkdir /home/domain-acme
sudo chown -R domain-acme:domain-acme /home/domain-acme
chsh -s $(which zsh) domain-acme
cp ~/.zshrc /home/domain-acme/这将完成以下工作:
创建一个新用户
domain-acme。创建一个新目录
/home/domain-acme并将其所有权分配给用户domain-acme。将当前用户的
.zshrc配置文件复制到新用户的家目录,以便继承相同的环境设置。
步骤 2:安装 ACME.sh
ACME.sh 是一个轻量级的、支持 Let's Encrypt 证书管理的工具。你可以通过以下命令来安装它:
curl https://get.acme.sh | sh -s email=my@email.com这行命令会下载并安装 ACME.sh,并自动配置电子邮件地址(请根据你的需要替换 my@email.com)。
步骤 3:设置 Let's Encrypt 作为默认 CA
安装完成后,我们需要设置 Let's Encrypt 为默认的证书颁发机构。通过运行以下命令:
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt这会告诉 ACME.sh 使用 Let's Encrypt 来生成证书。
步骤 4:配置 Cloudflare API 凭证
为了通过 Cloudflare 的 DNS API 自动验证证书,我们需要设置一些环境变量,这些变量包括 Cloudflare 的 API 密钥和帐户信息。请替换以下信息:
export CF_Token="pWfu-YEUC"
export CF_Zone_ID="541c9631"
export CF_Account_ID="98412"CF_Token:Cloudflare API 的身份验证令牌。CF_Zone_ID:Cloudflare 域的 ID。CF_Account_ID:Cloudflare 帐户的 ID。
这些信息可以在你的 Cloudflare 账户中找到。
步骤 5:使用 DNS-01 验证方法申请证书
使用 Cloudflare DNS 作为验证方法后,我们可以通过以下命令为域名申请 SSL 证书:
~/.acme.sh/acme.sh --issue \
--dns dns_cf \
-d pkgx.de \
-d '*.pkgx.de'--dns dns_cf:指定使用 Cloudflare DNS API 进行 DNS-01 验证。-d pkgx.de:指定你要为其生成证书的主域名。-d '*.pkgx.de':指定你希望为子域名(如*.pkgx.de)也申请证书。
执行此命令后,ACME.sh 会自动在 Cloudflare 上创建 DNS 记录并验证。
步骤 6:完成证书申请
如果验证成功,你将会看到类似下面的输出:
[Thu Mar 1 10:00:00 UTC 2026] Congrats, your certificate is ready:
[Thu Mar 1 10:00:00 UTC 2026] Your cert is in /root/.acme.sh/pkgx.de/fullchain.pem
[Thu Mar 1 10:00:00 UTC 2026] Your cert key is in /root/.acme.sh/pkgx.de/pkgx.de.key你可以在指定路径找到生成的证书和私钥。

