帮助中心 >
  关于网络安全 >
  通配符证书是什么?一个证书保护所有子域名怎么做到?

通配符证书是什么?一个证书保护所有子域名怎么做到?

时间 : 2026-05-10 10:11:14
编辑 : DNS.COM

  很多人在给网站部署HTTPS时,最先遇到的问题往往不是证书怎么申请,而是子域名越来越多,证书到底该怎么管?

  最开始可能只有一个主站,比如example.com。后来业务慢慢扩展,又有了pi.example.com、cdn.example.com等,再往后,后台、测试环境、活动页、独立业务线都会陆续出现。这个时候如果每个子域名单独申请一张证书,管理成本很快就会上来:续期麻烦、部署繁琐、配置容易出错。

  这时候就会用到通配符证书。可以简单理解成用一张证书匹配同一级别的多个子域名。

  比如一张签发给:*.example.com,它通常可以覆盖api.example.com、cdn.example.com,也就是说,只要是 example.com 下面的一级子域名,理论上都可以用这一张证书。

  很多人第一次看到这里会问:为什么一张证书就能保护这么多域名?浏览器是怎么知道它合法的?

  核心在于:证书里并不是只写了一个固定域名,而是写了一个通配规则。

  现代 TLS 证书里有一个很关键的字段,叫SAN。浏览器在建立 HTTPS 连接时,会拿用户访问的域名去和证书里的 SAN 列表做匹配。

  如果证书里写的是:*.example.com,那么浏览器在访问 api.example.com 时,会检查:api是否处于 example.com 的一级子域位置?如果匹配成功,这张证书就被视为合法。也就是说,浏览器并不是“认识所有子域名”,而是按照通配规则进行匹配。

  不过这里有一个容易误解的地方:通配符并不是无限层级匹配。

  例如:一张 *.example.com,通常可以覆盖api.example.com,但一般不能覆盖test.api.example.com,因为这已经是二级嵌套子域名了。可以把它理解为:* 只占一个标签位,而不是无限向下展开。这也是很多人在部署多级业务域名时容易踩的坑。

  还有一个常见问题是:它能不能保护根域名?比如example.com,答案通常是不能。

  因为:*.example.com 匹配的是“某个前缀 + example.com”,而根域名本身没有前缀。

  所以在实际申请时,很多人会把两者一起加进去:example.com、*.example.com,这样主站和一级子域都能覆盖。

  接下来再说一个大家经常好奇的问题:证书机构凭什么相信你有权申请整个通配符?

  原因在于验证方式。

  普通单域名证书,有时可以通过 HTTP 文件验证,也就是在网站目录里放一个验证文件。但通配符证书通常要求 DNS 验证(DNS-01)。也就是说,你需要在域名 DNS 里添加一条特定的 TXT 记录。

  证书机构会去查询:

  _acme-challenge.example.com

  如果记录正确,就证明你确实控制着这个域名的 DNS。

  为什么要这样?因为通配符意味着你申请的是整个子域空间。如果只靠某一个具体网站目录验证,那安全边界就太弱了。而 DNS 控制权通常更接近域名所有权,所以更适合作为验证手段。这也是为什么很多人第一次申请通配符时,会发现步骤和普通单域名不太一样。

  从运维角度看,通配符证书最大的价值其实不是“省一张证书的钱”,而是统一管理成本。

  比如你有十几个业务子域名。如果每个域名单独部署证书数量多,到期时间不一致,自动续期复杂,容易漏更新。而使用通配符之后统一签发,统一部署,统一续期,对中小规模业务尤其方便。

  但它也不是没有代价。最大的风险之一,是私钥集中化。因为多个子域共用同一张证书,也意味着多个服务可能会持有同一套私钥。如果某台机器被入侵、私钥泄露,那么理论上其他使用这张证书的子域也会受到影响。这就是为什么很多大型业务虽然完全有能力用通配符,但并不会把所有服务都绑在同一张证书上。

  另外,通配符证书也不是所有场景都最优。比如某些 SaaS、多租户平台,可能更适合使用 SAN 多域名证书或动态证书管理,而不是简单用一个通配符覆盖全部。

  从部署角度来说,服务器本身并不会“自动识别通配符”。

  你仍然是像普通证书一样,把证书和私钥配置到 Nginx、Apache 或负载均衡里。

  例如在 Nginx 中:

server {
    listen 443 ssl;
    server_name api.example.com;

    ssl_certificate     /etc/ssl/example/fullchain.pem;
    ssl_certificate_key /etc/ssl/example/private.key;
}

  如果证书本身包含 *.example.com,浏览器访问时就能完成合法匹配。也就是说,通配符的逻辑发生在证书验证阶段,而不是 Web 服务配置阶段。

  再说一个实际经验。很多人以为“用了通配符,以后新增子域名就一定不用管了”。这句话只说对了一半。证书层面确实通常不需要重新签发,但你仍然要配置DNS解析,Web 服务虚拟主机,业务访问策略,CDN回源规则,所以它解决的是“证书管理”,不是“整个域名接入流程”。

  简单总结一下:通配符证书,本质上是通过 *.example.com 这种规则,把多个一级子域纳入同一张 TLS 证书的匹配范围。浏览器通过 SAN 字段做域名匹配,证书机构通过 DNS 验证确认你拥有域名控制权。它真正解决的是多子域场景下的证书管理复杂度,而不是所有 HTTPS 问题。

DNS Amy
DNS Luna
DNS NOC
标题
电子邮件地址
类型
信息
验证码
提交