type
Post
status
Published
date
May 6, 2026
slug
summary
tags
category
Oracle
icon
password
整体架构
- 使用 acme.sh + Let's Encrypt
- DNS 验证方式(
-dns dns_cf)
- 每个域名使用独立的 Cloudflare 账号,凭据保存在该域名的配置文件内,互不影响
- 证书自动续期(cron 每天检查,到期前自动更新并 reload nginx)
一、准备工作
获取每个域名的 Cloudflare API 凭据
分别在各自的 Cloudflare 账号中:
- 进入「管理账户 →账户 API 令牌」
- 创建令牌 → 编辑策略:指定域名 → 选择对应域名
- 生成后记录:
- API 令牌(通常以
cfat_开头) - Account ID(在域名概览右侧或 API 令牌页面可复制,32 位十六进制)
二、为每个域名创建凭据配置文件
每个域名有一个自己的
.conf 文件,里面存放该域名专用的 CF 凭据。格式:
示例:
三、签发证书
1. 签发 www.example.com(通配符 + 根域名)
2. 签发 abc.example.net(仅单域名)
--force用于强制重新签发,如果不需要强制可去掉。
四、安装证书到指定路径
指定的路径会用于 nginx 配置,并且安装时会设置 reload 命令。
1. 安装 第一个账户域名 证书
2. 安装 第二个账户域名 证书
五、配置 nginx 使用新证书
在 nginx 的 server 块里设置:
示例:
检查并重载 nginx:
六、确保全局 account.conf 中无凭据残留
为了避免跨域名污染,清除可能遗留的环境变量:
七、验证和查看状态
1. 检查证书列表
应显示两个域名,SAN 一栏
www.example.com 包含 *.www.example.com,abc.example.com 为 no。2. 确认定时任务
输出类似:
3. 手动运行 cron 确认续期逻辑
应看到类似
Skipping. Next renewal time is: 2026-07-04T07:50:01Z,说明到期前会自动更新。4. 验证凭据隔离
两个文件中显示的 Token 应该不同。
流程精简版(三步走)
- 写入凭据 → 创建
~/.acme.sh/域名/域名.conf(CF_Token + CF_Account_ID)
- 签发安装 →
-issue+-install-cert,带-dns dns_cf和-ecc
- 配置 nginx → 证书路径指向
/etc/ssl/private/域名.key/etc/ssl/private/域名.cer,然后重载nginx -t && systemctl reload nginx
- 作者:Mystery Q
- 链接:https://nblog.qbobo.eu.org/3582a3ab-1aaa-80d6-a7e5-e00ee2f3946e
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


