acme.sh 证书签发完整指南
DNS 手动验证模式 · 从零到签发全流程
一、整体流程
- 执行
acme.sh --issue命令,获取 TXT 解析记录 - 复制终端输出粘贴到解析工具,自动提取主机记录与记录值
- 域名 DNS 管理后台添加对应的 TXT 解析记录
- 等待 2~5 分钟,让全球 DNS 解析生效
- 解析生效后,执行
acme.sh --renew提交 CA 验证,签发证书
二、命令说明
第 1 步:获取 TXT 记录(--issue)
acme.sh --issue -d 你的域名.com -d www.你的域名.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --keylength 2048 --force
执行后会输出 TXT 记录,不会签发证书。
第 3 步:提交验证签发(--renew)
acme.sh --renew -d 你的域名.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
DNS 配置完成并生效后执行,不会输出 TXT 记录。
🔴 重要:不要用
--renew 来获取 TXT 记录,拿不到。TXT 记录只能从 --issue 的输出中获取。
三、DNS 记录填写规则
主机记录怎么填
- 国内 DNS 后台(阿里云/腾讯云等):主机记录只填
_acme-challenge,后台会自动补全域名后缀 - 少数需要完整域名的 DNS:填
_acme-challenge.你的域名.com
🔴 常见错误:把完整域名
_acme-challenge.xxx.com 填到国内 DNS 的主机记录栏,会导致域名重复拼接成 _acme-challenge.xxx.com.xxx.com,解析完全失效,验证必败。
中文域名特殊处理
- acme.sh dns-manual 模式下,同时填写主域名 + www 可能只输出单条 TXT 记录,遇到请分开签发(先主域,再主域+www)
- DNS 面板无法保存中文主机名时,改用
xn--开头的 punycode 编码
四、CA 证书服务商切换
永久切换命令
# 永久切换到 Let's Encrypt(跳开 ZeroSSL)
acme.sh --set-default-ca --server letsencrypt
# 永久切回 ZeroSSL
acme.sh --set-default-ca --server zerossl
💡 说明:永久切换执行一次即可,后续所有命令默认走新的 CA,重启服务器、升级 acme.sh 都不会自动改回。临时切换在命令末尾加
--server xxx,仅当前这条生效。
两者对比
| 项目 | ZeroSSL | Let's Encrypt |
|---|---|---|
| 证书数量限制 | ACME 命令行签发无上限;网页后台 90 天仅 3 张 | 同一组域名 7 天最多成功签发 5 张,频繁 --force 容易触发配额报错 |
| 验证失败惩罚 | 连续失败会触发最长 24 小时冷却(retryafter=86400) | 短时间限流,无 24 小时超长冷却 |
| 适用场景 | 大量调试、反复测试签发域名 | 正式稳定签发,少反复重签 |
| 证书有效期 | 90 天 | 90 天 |
| 网页后台查看 | 需绑定 EAB 凭证后才能在网页看到 ACME 订单 | 无网页后台,只能服务器 acme.sh --list 查看 |
🔴 注意:永久切换只是修改 acme.sh 本地配置,不会删除已有的证书和域名记录;切换前在 ZeroSSL 产生的云端风控/冷却记录不会被清除,加
--server zerossl 仍会受影响。
五、常见报错与解决
1. retryafter=86400
原因:ZeroSSL 账户触发 24 小时冷却,短时间内验证失败次数过多。
解决:等待 24 小时自然到期,或永久切换到 Let's Encrypt 绕开。
2. 一直卡在 Multi domain=xxx
原因:当前 CA 账户被限流,请求无法正常响应。
解决:切换 CA 服务商,或等待限流解除。
3. DNS 验证失败
原因:大概率是主机记录填错(带了完整域名后缀),或 DNS 尚未生效。
解决:检查主机记录只填 _acme-challenge,用 dig 命令确认解析生效后再 renew。
4. too many certificates already issued
原因:Let's Encrypt 同一组域名 7 天内签发超过 5 张。
解决:等待 7 天配额重置,或减少 --force 重复签发。
六、检测解析是否生效
# 检测主域名 TXT
dig TXT _acme-challenge.你的域名.com
# 检测 www 子域名 TXT
dig TXT _acme-challenge.www.你的域名.com
返回结果中能看到对应的 TXT 记录值,说明解析已生效,可以执行 renew。
七、其他常用命令
# 查看本地所有证书
acme.sh --list
# 删除本地某个域名记录(不影响云端)
acme.sh --remove -d 你的域名.com
# 查看当前默认 CA
acme.sh --info -d 你的域名.com