acme.sh 使用指南(基于 Cloudflare DNS 申请 ECC 通配符证书)
⚙️ 环境依赖
确保系统已安装:
- socat
- wget
- curl
- crontab
需要域名托管到Cloudflare,其它服务商:acme.sh文档
📥 安装 acme.sh
curl https://get.acme.sh | sh |
验证安装:
acme.sh --version |
🔄 选择证书服务商(CA)
- 默认使用 Let’s Encrypt:
acme.sh --set-default-ca --server letsencrypt |
- 切换到 ZeroSSL:
acme.sh --set-default-ca --server zerossl |
🔐 创建 Cloudflare API Token
点击【Create Token】
选择模板【Edit zone DNS】
权限配置:
- Zone → DNS → Edit
作用域限定为你要申请证书的域名(例如 micc.xyz)也可也是所有域名
生成并复制 API Token
🧩 配置环境变量
导出 API Token:
export CF_Token="你的 Cloudflare API Token" |
建议写入 ~/.bashrc
文件,保证登录自动生效
🧾 申请 ECC 通配符证书(使用 Cloudflare DNS 验证)
acme.sh --issue \ |
--issue
表示申请新的证书--dns dns_cf
指定使用 Cloudflare 的 DNS API 来进行 DNS 验证-d micc.xyz
主域名-d '*.micc.xyz'
泛域名--keylength ec-256
指定生成的密钥类型为 ECC(椭圆曲线加密)256 位--force
强制重新申请证书,即使证书尚未到期也会覆盖更新
📂 安装证书到指定目录
创建证书文件夹
sudo mkdir -p /www/ssl/micc.xyz/ |
因为我用的普通用户不能创建目录,只能创建后修改所有者;youruser:youruser:第一个是新的所有者用户名,第二个是用户组(一般跟用户名同名)
安装证书
acme.sh --install-cert -d micc.xyz \ |
–reloadcmd “sudo /usr/bin/systemctl reload nginx” 表示重新加载nginx;我用的普通用户需要用
visudo
添加一行(替换 youruser 为你的用户名):
youruser ALL=NOPASSWD: /usr/bin/systemctl reload nginx |
🔁 自动续签
acme.sh 会自动添加 cron 任务来续签证书。
- 查看定时任务:
crontab -l |
- 手动测试续签:
acme.sh --renew -d micc.xyz --ecc --force |
🛠️ acme.sh 升级和维护
- 查看版本:
acme.sh --version |
- 升级 acme.sh:
acme.sh --upgrade |
- 开启自动升级:
acme.sh --upgrade --auto-upgrade |
- 关闭自动升级:
acme.sh --upgrade --auto-upgrade 0 |