文档首页> 技术教程> 泛域名证书申请与多站点复用

泛域名证书申请与多站点复用

发布时间:2026-02-15 09:12        更新时间:2026-02-15 11:14
站点一多,逐个子域名单独签证书很快会乱,各证书的到期时间还错开,逐个核对是件麻烦事。泛域名证书(wildcard 证书)一张就能覆盖同一级的所有子域,blog.example.com、api.example.com 共用一张 *.example.com,子站涨到十来个时,维护成本的差距会非常直观。 覆盖范围的边界 通配符只匹配一级。*.example.com 覆盖 a.example.com,但不覆盖 a.b.example.com,也不覆盖裸域 example.com 本身,所以签发时一般写成两个域名一起: -d example.com -d "*.example.com" 两级子域需要另签一张 *.a.example.com,别指望一张证书管到底。反过来,新增同级子站(比如 net.example.com)不需要重签,直接复用这张证书改 server_name 就行。这个边界在规划阶段就要想清楚,等站点打不开才想起来,排查起来会绕远路。 DNS 验证签发 泛域名不支持 webroot 方式,只能走 DNS 验证。手动模式执行: acme.sh --issue -d example.com -d "*.example.com" --dns 脚本会输出一条 TXT 记录,去域名解析后台给 _acme-challenge.example.com 加上这条记录,等生效(一般一两分钟,可用 dig TXT _acme-challenge.example.com 确认)后继续: acme.sh --renew -d example.com -d "*.example.com" --yes-I-know-dns-manual-mode-enforce-go-no 两个细节容易出错:复制 TXT 值时别把外层引号一起带进解析框;域名的 DNS 托管在哪家就去哪家加记录,托管商找错,记录加得再对也没人查。加了 TXT 验证还是不过,多半就出在这里,先用 dig 确认记录公网可查,再回来重试。 手动模式签的证书无法自动续期,到期要重新走一遍,建议在日历上提前一个月设提醒。想全自动,就用 DNS 服务商的 API 插件:把 API 密钥导出成环境变量后按 --dns dns_xxx 方式签发,acme.sh 会自动添加和删除 TXT 记录,续期无人值守。这把密钥能改你域名的全部解析,权限要单独保管。 部署到 Nginx 多站点复用 证书装到固定路径后,所有子站点共用同一对文件: ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; 每新增一个子站点,只写 server_name,不用再碰证书。唯一要记得的是私钥文件权限收到 600,避免同机其他用户读走;续期也纳入同一套自动续期加到期监控的体系,一次配好长期省心。