# PVE 配置 acme.sh + Cloudflare 实现 https 证书自动续签（DNS 验证）

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">本文写于 2026 年 7 月，Cloudflare API 配置部分为当时界面，后续可能调整，请以实际情况为准。</div>
</div>

此方案本身要求域名托管在 Cloudflare （即 NS 指向 Cloudflare）。

本着安全和最小权限的原则，本方案我们使用 User API Token + Zone ID（区域 ID） 的方式进行授权。

# 1\. Cloudflare 配置 API Token

Cloudflare 现在 API 的管理非常让人迷惑，有一个 Account API Token，还有一个 User API Token。中文分别翻译做了账户和用户，这个翻译就会让人更迷惑。

User API token 生成需要点击右上角的个人 icon，选择 Profile，在新打开的 My Profile 页面左侧找到 API Tokens，然后就可以找到 User API Tokens 界面。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/25b109dd-9323-4e90-bda6-53c764555e9c.png align="center")

权限的话，只需要配置 Zone.Zone（只读）和 Zone.DNS（编辑）两个权限就可以，具体的菜单项配置可参考下图。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/986284f7-db88-4c37-982e-4b29a98dfcef.png align="center")
<div><p></p></div>

# 2\. 获取域名对应的 Zone ID

Zone 区域的概念和域名是对应的，所以我们首先要控制台首页进入对应的域名配置页。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/43373d7b-4a16-4d20-8bdc-552c77b3338e.png align="center")

进入后在 Overview 页面，右侧页面一直往下滑，最下方的 API 处就会有对应的 Zone ID。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/75f718e6-f95a-4226-8db4-8c6eee100e21.png align="center")
<div><p></p></div>

# 3\. 配置数据中心（Datacenter）插件

## 3.1 证书签发前登记（注册账户）

在 Datacenter 的设置中找到 ACME，首先在上方的 Account 中添加一个账户，名称（Account Name）可依据个人偏好随意填写，邮件地址填写个人邮箱。

ACME Directory 这里有两个选项：Let's Encrypt V2 可视作“生产环境”，有严格的频率限制，超限后会一段时间被暂停服务；Let's Encrypt V2 Staging 可是做“测试环境”，这里可用来多次高频的实验性签发，证书会带有 Staging 的标志，且证书仅用于技术可行性验证，并不保证可靠性。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/dcf98ac4-6cf0-4226-b71e-e8b3713f2818.png align="center")

完成点击接受 TOS 协议，注册即可。

## 3.2 配置 ACME 插件（Plugin）

接下来到下方配置插件。点击添加按钮，Plugin ID 可依据个人喜好自行配置，DNS API 选择“Cloudflare Managed DNS”，然后填写前面两步获取的 `CF_Token` 和 `CF_Zone_ID` 两个参数，部分格式提示见图片。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/87f2179f-01ef-4ba4-a536-fd7748beb59d.png align="center")
<div><p></p></div>

# 4\. 配置主机证书

接下来我们把视角从数据中心切换到单台宿主机（图示为 pve），进入宿主机的系统设置（System），选择证书（Certificates），在下方的 ACME 中点击添加。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/fc99694b-e2c1-4d57-ad9e-c72674147b7e.png align="center")

既然没有 Web 对外暴露，Challenge Type 我们只能选择 DNS 方式，插件选择刚刚建立的插件（这里下拉选项里应该能看到刚刚创建的 Plugin ID），Domain 中填写机器对应的域名即可。

上述步骤全部完成后，点击 Order Certificates Now，即可自动更新。

![](https://cdn.hashnode.com/uploads/covers/626c0f100c2dd1d27d0083d2/31aac4ce-ce3e-4376-9fb8-90fbf5aa8a1e.png align="center")

后续，系统会根据 3.2 中 Validation Delay 的配置要求，在证书到期前的特定日期，自动发起证书的需求和 Web 的重启生效。
