0、引言
目前国内主流域名证书的申请还是通过各大云厂商、域名厂商来做申请,但是各大厂商主要针对单域名证书提供了免费申请通道,针对涉及多子系统的项目可能需要泛域名证书(即通配符证书),而部分预算有限或者有临时使用需求的,就可能涉及需要申请免费泛域名证书,今天主要介绍通过开源项目acme.sh生成免费泛域名证书的方法。
1、acme.sh 项目介绍
1.1 项目概况
acme.sh 是一个纯 Shell 脚本实现的 ACME 协议客户端,由 ZeroSSL 官方维护,主打轻量、无依赖、全自动,是免费 SSL 证书管理的标杆工具。
项目地址:https://github.com/acmesh-official/acme.sh
核心定位:免费 SSL/TLS 证书签发、续期、部署全流程自动化工具

1.2 核心优势
- 纯 Shell 编写:无 Python/Node.js 等依赖,兼容所有 Unix 系统
- 多 CA 支持:默认 ZeroSSL(权威 CA),兼容 Let's Encrypt、BuyPass 等,具体清单如下图

- 泛域名专属:原生支持通配符证书(*.domain.com),仅需 DNS 验证
- 全自动续期:内置 cron 任务,证书到期前自动续签,永久有效
- 全格式输出:一键生成 .cer/.crt/.pem 等 Nginx 直接可用格式
2、域名证书分类
acme.sh支持生成单域名证书和泛域名证书
2.1 单域名证书(Single Domain)
定义:仅绑定一个精确域名,如 www.example.com
限制:仅能保护单个域名,子域名需单独申请
适用:仅单个站点,无多子域名需求
2.2 泛域名证书(Wildcard / 通配符证书)
定义:绑定主域名 + 所有子域名,格式为 *.example.com
优势:一张证书覆盖所有子域名(如 a.example.com、b.example.com),一劳永逸
关键:仅支持 DNS-01 验证(HTTP 验证无法覆盖通配符)
适用:多子域名站点(如 SaaS、企业官网、测试环境)
2.3 证书核心区别
| 类型 | 域名范围 | 验证方式 | 成本 |
|---|---|---|---|
| 单域名 | 单个精确域名 | https/DNS | 免费 |
| 泛域名 | 主域名 + 所有子域名 | 仅 DNS | 免费(acme.sh+ZeroSSL) |
3、泛域名证书生成步骤
1、环境准备
服务器:Linux(CentOS/Debian/Ubuntu)或者本机电脑
域名:已备案域名(如 example.com)
DNS 服务商:阿里云 / 腾讯云 / Cloudflare(支持 API 自动添加 TXT 记录)
这里我以阿里云DNS服务商为例,具体生成时根据你自己的DNS服务商来配置。
2、安装 acme.sh(四种方式,选择其一即可)
(1)curl指令安装
shell
curl https://get.acme.sh | sh -s email=你的邮箱(用于注册)
(2)wget指令安装
shell
wget -O - https://get.acme.sh | sh -s email=你的邮箱
```shell
(3)git指令安装
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m 你的邮箱
(4)手动下载
```shell
# 手动从github下载该项目,然后进入主目录,执行安装指令
./acme.sh --install -m 你的邮箱

2、验证,输出版本号则说明安装成功
shell
acme.sh --version

3、因为泛域名证书需要通过DNS验证,我们需要先申请DNS的AccessKey,这里以阿里云为例,登录阿里云控制台后,点击头像

再点击"AccessKey"选项,初步访问时会提示你建议使用RAM用户来获取AccessKey,云账号权限相对较大,从更安全的角度,大家可以点击"使用RAM用户"来创建获取,这里为了演示方便先直接用云账号

点击"创建AccessKey"之后就会生成出来,将对应的AccessKey和Secret保存下来
4、配置环境变量
shell
export Ali_Key="你的阿里云AccessKey"
export Ali_Secret="你的阿里云Secret"
注意,这里如果是其他云平台,环境变量名称及后续的dns服务商名称会不一样,具体可以参考:https://github.com/acmesh-official/acme.sh/wiki/dnsapi2

这里我将国内几家常用的列举出来:
| 厂商 | 环境变量名称 | dns参数名称 |
|---|---|---|
| 阿里云 | Ali_Key、Ali_Secret | dns_ali |
| 腾讯云 | Tencent_SecretId、Tencent_SecretKey | dns_tencent |
| 华为云 | HUAWEICLOUD_Username、HUAWEICLOUD_Password、HUAWEICLOUD_DomainName | dns_huaweicloud |
| 百度云 | Baidu_AK、Baidu_SK | dns_baidu |
5、签发主域名 + 泛域名证书(ZeroSSL 为默认CA)
shell
acme.sh --issue \
-d example.com \ # 主域名
-d "*.example.com" \ # 泛域名(通配符)
--dns dns_ali \ # DNS 服务商(阿里云)
--dnssleep 120 # 等待 DNS 解析生效(秒)
关键说明:
-d 必须同时指定主域名 + 泛域名
--dns 选择对应服务商
--log 如果执行失败,可以打印日志查看具体保存信息
证书默认保存路径:~/.acme.sh/example.com/,mac电脑在/Users/wuhanxue/.acme.sh/example.com/下
执行后会生成对应的证书文件

如果还需要其他格式的,可以通过acme.sh --install-cert指令来生成
shell
./acme.sh --install-cert -d gafz.com.cn \
--cert-file 指定路径/ssl/xxx.com.cn.cer \
--key-file 指定路径/ssl/xxx.com.cn.key \
--fullchain-file 指定路径/ssl/xxx.com.cn.pem \
--ca-file 指定路径/ssl/xxx.com.cn.ca.crt

综上所诉,就可以把证书生成出来,直接部署使用即可。
4、拓展功能
此外,acme.sh还支持添加cron任务,实现证书到期自动续约,无需人为操作,或者可以通过acme.sh --renew -d xxx.com指令来手动续约
5、ZeroSSL 证书安全性解析
acme.sh生成的证书默认CA机构是ZeroSSL,那ZeroSSL颁发的证书安全性怎么样呢,是否可靠,我们首先来了解ZeroSSL。
5.1 ZeroSSL 是什么
ZeroSSL 是国际权威 CA(证书颁发机构),成立于 2018 年,证书被 99.9% 浏览器 / 操作系统信任。
官方网站:https://zerossl.com
核心资质:浏览器根证书库内置,与 Let's Encrypt 同级权威。
5.2 证书安全性核心要点
1、证书由 ZeroSSL 直接签发,包含完整证书链(根 CA → 中间 CA → 域名证书)
浏览器 / 手机 / 电脑默认信任,访问站点显示绿锁,无 "不安全" 警告
2、密钥算法:默认 RSA-2048(金融级安全,抗暴力破解)
证书有效期:90 天(短周期降低泄露风险,自动续期无感知)
传输协议:支持 TLS 1.2/1.3(最新安全协议,防止中间人攻击)
3、泛域名证书强制 DNS-01 验证:需在域名 DNS 中添加专属 TXT 记录,证明域名所有权
无域名控制权无法签发,杜绝伪造证书风险
综上所诉,ZeroSSL颁发的免费证书具备金融级安全加密,针对个人网站、测试环境或者临时使用完全足够,甚至经费有限的企业配合web防火墙使用也足够支撑。
5.3 如何验证证书背书
查看证书签发机构(确认ZeroSSL背书)
shell
openssl x509 -in /etc/nginx/ssl/example.com.crt -noout -issuer
输出包含 ZeroSSL 即表示正规 CA 背书有效。
此外部署之后,我们在浏览器访问域名服务也能看到证书的相关信息

6、总结
通过 acme.sh + ZeroSSL,你可以零成本、5 分钟内生成带权威 CA 背书的泛域名证书,一张证书覆盖所有子域名,全自动续期,安全可靠。