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指令安装

curl https://get.acme.sh | sh -s email=你的邮箱(用于注册)

(2)wget指令安装

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、验证,输出版本号则说明安装成功

acme.sh --version

在这里插入图片描述
3、因为泛域名证书需要通过DNS验证,我们需要先申请DNS的AccessKey,这里以阿里云为例,登录阿里云控制台后,点击头像
在这里插入图片描述
再点击“AccessKey”选项,初步访问时会提示你建议使用RAM用户来获取AccessKey,云账号权限相对较大,从更安全的角度,大家可以点击“使用RAM用户“来创建获取,这里为了演示方便先直接用云账号
在这里插入图片描述
点击“创建AccessKey”之后就会生成出来,将对应的AccessKey和Secret保存下来

4、配置环境变量

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)

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指令来生成

./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背书)

openssl x509 -in /etc/nginx/ssl/example.com.crt -noout -issuer

输出包含 ZeroSSL 即表示正规 CA 背书有效。

此外部署之后,我们在浏览器访问域名服务也能看到证书的相关信息
在这里插入图片描述

6、总结

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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐