宝塔面板不支持通配符证书与多主域混用,因Let’s Encrypt协议限制;应选SAN证书覆盖同主域多子域,或用DNS验证方式单独申请单主域通配符证书,并在CDN场景下同步上传证书至边缘节点。

宝塔面板本身不支持直接为多个独立主域名(比如 example.com 和 another.net)共用一张通配符证书——通配符证书只匹配单个主域下的子域,如 *.example.com 只覆盖 www.example.com、api.example.com,但无法覆盖 another.net。真正可行的是:用一张 SAN 证书(多域名证书)或一张泛域名证书(*.example.com),二者选其一,按需部署。
为什么不能混用通配符 + 多主域?
Let’s Encrypt 的 ACME 协议明确限制:通配符域名(*.example.com)必须单独申请,且不能与其它主域(如 another.net)共存于同一张证书中。你尝试在宝塔里同时填入 *.example.com 和 another.net,点击申请时会直接报错:Invalid domain name: another.net 或 Too many DNS challenges。
常见误操作包括:
- 在「添加更多域名」里输入
*.example.com和another.net一起提交 - 手动编辑 Nginx 配置,强行让多个 server_name 共享一个
ssl_certificate路径,结果浏览器提示 NET::ERR_CERT_COMMON_NAME_INVALID
正确做法:优先用 SAN 证书覆盖所有同主域子域
如果你的多个域名都属于同一主域(如 example.com、www.example.com、shop.example.com、api.example.com),那就该用 SAN 证书,不是通配符。宝塔默认走的就是这条路,且最稳。
操作要点:
- 添加站点时,
域名输入框先填主域名example.com(必须为首项) - 点「添加更多域名」,逐行填入其余域名,不要加
*,不要写*.example.com - 勾选「申请Let’s Encrypt免费SSL」+「自动续签」
- 提交后,宝塔调用
acme.sh --issue -d example.com -d www.example.com -d shop.example.com ...,生成完整 SAN 证书 - 证书路径固定为
/www/server/panel/vhost/cert/example.com/,含fullchain.pem和privkey.pem
非要通配符?只能单主域 + DNS 验证
若你确实需要 *.example.com(比如子域数量动态增长、无法预列全),就必须放弃宝塔界面一键申请,改走 DNS 验证模式,并确保域名 DNS 服务商在 acme.sh 支持列表内(阿里云、腾讯云、Cloudflare 等都支持)。
步骤简明版:
- SSH 登录服务器,执行
source /root/.acme.sh/acme.sh.env - 运行命令:
/root/.acme.sh/acme.sh --issue -d example.com -d *.example.com --dns dns_ali --keylength 2048(以阿里云 DNS 为例,dns_ali需提前配置 API 凭据) - 成功后执行:
/root/.acme.sh/acme.sh --installcert -d example.com --fullchainpath /www/server/panel/vhost/cert/example.com/fullchain.pem --keypath /www/server/panel/vhost/cert/example.com/privkey.pem - 回到宝塔「SSL」页,点击「已存在证书」→「从文件获取」,选中刚部署的证书即可启用
注意:--dns 模式下,acme.sh 会自动添加 _acme-challenge TXT 记录并等待生效,全程无需开放 80 端口,适合 CDN 已接入、端口被封的场景。
CDN 场景下证书必须同步到边缘节点
哪怕你在宝塔里把 *.example.com 证书配得再准,只要域名开了 CDN(如 Cloudflare、腾讯云 CDN、又拍云),用户实际访问的是 CDN 节点,而非你的服务器。此时宝塔的证书完全不生效。
必须额外操作:
- 登录 CDN 控制台,在对应域名的 HTTPS 设置里上传同一份证书(
fullchain.pem内容作为证书,privkey.pem作为私钥) - 确认 CDN 开启「强制 HTTPS」和「HTTP/2」支持
- 检查 CDN 回源协议:建议设为 HTTPS,避免源站暴露在 HTTP 下
- 验证方式:用
curl -I https://shop.example.com看Server响应头是否来自 CDN,再用浏览器点锁图标看证书颁发者是否为 CDN 提供方(如 Cloudflare Inc)
这个环节最容易被跳过,也是“明明宝塔显示证书已启用,但访问还是不安全”的最常见原因。


















