免费泛域名证书真的存在吗?
目前没有真正意义上长期、稳定、可直接用于生产环境的免费泛域名(通配符)SSL证书。
Let’s Encrypt 虽然提供免费通配符证书,但必须通过 DNS-01 挑战方式验证,且每次签发有效期仅 90 天,需配合自动化工具(如 acme.sh 或 Certbot)完成续期,对运维能力有明确要求。
多子域名业务为什么优先考虑泛域名证书?
当业务线逐步扩展,遇到 [www.example.com](https://www.example.com)、api.example.com、cdn.example.com、app.example.com 等多个子域名都需要启用 HTTPS 时,逐个申请与配置单域名证书很快就会带来沉重的运维负担。
一旦其中某个子域名的证书因忘记续期而过期,就会直接导致前端 API 请求失败或用户页面报安全警告。使用泛域名证书(Wildcard Certificate,如 *.example.com),只需部署一张证书即可为所有二级子域名提供 TLS 加密能力,大幅简化了证书管理工作。
对于因证书过期引发的系统异常,可参阅 修复SSL证书错误 的排查说明。
哪些场景适合免费泛域名证书?哪些场景必须选商业证书?
免费泛域名证书主要通过 ACME 协议签发,代表性机构为 Let's Encrypt。但在实际决策中,不能只看“免费”二字,需要明确其应用边界:
适合使用免费泛域名证书的场景
- 内部微服务、研发测试集群、测试 API 接口的开发与测试环境。
- 博客、个人工具站、访问量中等的企业非核心业务的个人项目与中小型站点。
- 为用户自动生成的动态二级域名提供基础加密的SaaS 或多租户平台初期的子域名部署。
推荐使用商业泛域名证书(DV / OV)的场景
- 需要提升品牌的权威性与信任度的企业官网与主营业务系统。
- 对证书合规性与人工安全保障有明确要求的涉及支付、金融与敏感数据的接口。
- 无法维护定时脚本,或者域名解析接口不方便对自动化工具开放权限的缺少专业运维人员的小团队。
原因在于:免费泛域名证书仅能验证域名控制权(DV 级别),且有效期仅有 90 天,完全依赖自动化脚本;而商业 OV 泛域名证书包含经过 CA 审核的企业身份信息,有效期更长,出了问题更有 CA 机构的人工技术支持与赔付保障。
如果需要进一步评估企业采购预算与规格,可查阅 SSL证书选购指南 和 商业SSL证书价格;关于不同验证级别(DV、OV)的详细说明,可参考 SSL证书类型;若需了解数字证书背后的技术原理,可参阅 什么是SSL证书。
泛域名证书为什么强制使用 DNS 验证?
不同于普通单域名证书可以通过在 Web 根目录下放置验证文件的 HTTP-01 方式,国际标准(CAB Forum)规定申请通配符泛域名证书必须使用 DNS-01 验证。
因为泛域名覆盖了当前和未来可能创建的所有子域名,CA 必须要求申请者在域名权威解析服务商处添加一条名为 _acme-challenge.yourdomain.com 的 TXT 文本记录,以此证明对整个域名解析树拥有完全控制权。
如果人工每次去 DNS 后台手动加记录,每 90 天重复一次极易出错。因此在生产环境中,通常配合 acme.sh 或 Certbot 调用域名解析商的 DNS API 实现自动化写入与签发。
方案一:使用 acme.sh 配合 DNS API 自动化部署
acme.sh 是目前对国产云厂商(阿里云、腾讯云 DNSPod)及 Cloudflare 支持极佳的轻量级自动化工具。
Step 1: 安装 acme.sh 客户端
Bash
curl https://get.acme.sh | sh -s email=your_email@example.com
source ~/.bashrc
Step 2: 导入 DNS API 密钥
以阿里云为例(建议在阿里云控制台创建仅包含 AliyunDNSFullAccess 权限的 RAM 子账号):
Bash
export Ali_Key="你的AccessKey_ID"
export Ali_Secret="你的AccessKey_Secret"
Step 3: 一键签发证书
同时将主域名与泛域名包含在同张证书内,方便兼容访问:
Bash
acme.sh --issue --dns dns_ali -d example.com -d "*.example.com"
Step 4: 安装证书至 Nginx 目录并挂载自动重载
Bash
acme.sh --install-cert -d example.com -d "*.example.com" \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.pem \
--reloadcmd "systemctl reload nginx"
acme.sh 默认会创建系统定时任务(Crontab 或 Systemd Timer),在到期前自动检查并续期。
方案二:使用 Certbot 配合 DNS 插件申请泛域名证书
如果服务器环境已原生集成了 Certbot,也可以使用 Certbot 配合官方或第三方 DNS 插件完成签发。
1. 使用 Certbot DNS 插件(全自动模式)
以 Cloudflare 为例,安装 python3-certbot-dns-cloudflare 插件并配置含有 API Token 的凭证文件 cloudflare.ini 后,执行以下命令:
Bash
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
-d example.com \
-d "*.example.com" \
--deploy-hook "systemctl reload nginx"
2. 手动 DNS 验证模式(适合仅测试、不配置自动续签)
如果不方便在服务器配置 API Key,可以采用手动模式,根据命令行提示手动去 DNS 控制台添加 TXT 记录:
Bash
certbot certonly \
--manual \
--preferred-challenges dns \
-d example.com \
-d "*.example.com"
需要注意的是,通过 --manual 手动模式签发的证书,后续无法自动续签,必须在到期前重新手动执行一遍。
关于新节点的搭建与 Web 服务器部署指引,可参阅 怎么安装SSL证书;若涉及流量收敛,可参考 网站从HTTP更改为HTTPS 的迁移路线。对于测试与轻量站点,也可参阅 免费SSL证书是什么 获取更多知识。
注意事项
1. 泛域名证书不保护三级或更深层级的子域名
*.example.com 仅能保护 a.example.com、b.example.com 等二级域名,无法覆盖 test.dev.example.com 这种三级子域名。如果业务存在多层级子域名,需要单独为 *.dev.example.com 申请额外的泛域名证书。
2. 严控 DNS API Key 的操作权限
自动化续签需要将 API Key 存放在服务器上。为了降低安全隐患,切勿直接使用云厂商的主账号 Key。务必使用授权限制(RAM/API Token),将权限严格限定为“仅允许修改指定域名的 TXT 解析记录”。
3. 多节点/集群环境不要每台机器单独发起申请
如果有 10 台 Web 节点或使用了负载均衡,切勿在每台机器上都配置自动申请,否则极易触发 Let's Encrypt 的单域名频次限制(Rate Limit)。正确做法是在一台运维主节点上统一签发续期,再通过 CI/CD 流水线或 Ansible 脚本同步把 fullchain.pem 和 .key 分发到各个节点并触发重载。
在遇到公私钥不匹配或格式解析异常时,可使用 SSL证书工具 比对哈希,或参考 SSL证书格式错误 的修复办法。
常见问题解答
免费泛域名证书每次申请能用多久?
A:目前 Let's Encrypt 等免费 CA 签发的泛域名证书有效期限均为 90 天。通过配置 acme.sh 或 Certbot 的 DNS API 自动化任务,脚本会在到期前 30 天内静默完成自动续期,无需人工介入。
为什么泛域名证书不能用 HTTP 文件路径的方式验证?
A:因为泛域名涵盖了该主域名下所有尚未创建的子域名,CA 无法通过某个具体 IP 或服务器目录下的文件,来证明申请者对整个域名树的操作控制权,因此国际标准强制规定必须通过 DNS 记录验证。
免费泛域名证书和商业泛域名证书在加密强度上有区别吗?
A:没有区别。二者在传输层使用的加密算法(如 RSA 2048、AES-256、ECC/ECDSA)和安全强度完全一致。主要区别在于身份校验级别(是否包含企业名称)、有效期限、人工服务支持及财务赔付保障。



京公网安备11010502031690号
网站经营企业工商营业执照
















