通配符证书适合同一主域名下的多级子域批量保护,多域名证书适合跨主域名的独立站点聚合管理,选型主要看域名结构而非单纯的价格。
先说结论:同一主域下子域多且变动频繁选通配符,跨主域或域名数量固定选多域名证书。
- 适合:通配符用于 *.example.com 及其同级子域,多域名用于 example.com 与 test.net 组合
- 重点看:未来是否频繁新增子域,以及是否涉及不同主域名
- 别忽略:通配符私钥泄露会影响所有子域,多域名新增域名需重新审核
快速选型思路
选型阶段无需命令,先梳理域名清单:
1. 统计主域名数量:若只有一个主域名(如 example.com)且子域众多,倾向通配符。
2. 统计独立域名数量:若涉及 example.com、example.net 等多个主域,倾向多域名证书。
3. 评估变动频率:子域经常增加(如电商店铺子域)选通配符,域名固定选多域名。
核心区别与原理
通配符证书通过星号(*)匹配同一主域下的同级子域,例如 *.example.com 可覆盖 www.example.com 和 mail.example.com,但无法覆盖 a.b.example.com 三级子域。多域名证书依托主题备用名称(SAN)扩展,可在一张证书中绑定多个完全独立的域名,支持跨主域和跨后缀。
两者加密强度一致,均支持 RSA/ECC 等算法,区别在于保护范围和运维逻辑。通配符新增子域无需重新申请,多域名新增域名通常需提交审核并可能产生费用。
部署配置实操
证书文件通常包含公钥证书(.crt/.pem)和私钥(.key)。以下是 Nginx 和 Apache 的基础配置示例:
Nginx 配置示例:
server {
listen 443 ssl;
server_name *.example.com; # 通配符域名
# server_name example.com test.net; # 多域名写法
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}Apache 配置示例:
<VirtualHost *:443>
ServerName *.example.com
# ServerName example.com test.net
SSLEngine on
SSLCertificateFile "/etc/httpd/ssl/cert.pem"
SSLCertificateKeyFile "/etc/httpd/ssl/private.key"
</VirtualHost>关键部署注意:通配符证书需部署在所有处理 HTTPS 流量的服务器上。若子域解析到不同 IP(如 CDN 回源或多负载均衡架构),需将证书文件和私钥安全同步分发到所有对应节点,否则 HTTPS 握手会失败。
私钥安全管理
通配符证书私钥权限过大,一旦泄露所有子域均受威胁,需严格执行以下安全措施:
1. 文件权限控制:私钥文件权限应设置为 600,属主为 root。
chmod 600 /etc/nginx/ssl/private.key chown root:root /etc/nginx/ssl/private.key
2. 存储建议:避免将私钥提交至 Git 仓库。生产环境建议使用 secrets manager 或加密存储卷。
3. 分发风险:向多台服务器分发通配符私钥时,建议使用 ansible 等自动化运维工具加密传输,避免明文拷贝。
自动化续费流程
为避免证书过期导致业务中断,建议配置自动续费。以 Let's Encrypt 及 Certbot 为例:
1. 安装 Certbot 及 Nginx 插件。
2. 首次申请通配符证书(需 DNS 验证):
certbot certonly `--dns-plugin` -d "*.example.com" -d "example.com"
3. 配置定时任务自动续费并重载服务:
0 0 1 * * certbot renew `--quiet` `--post-hook` "systemctl reload nginx"
多域名证书若使用 HTTP 验证,需确保所有绑定域名均能解析到执行续费命令的服务器。
验证方法
部署后可用 OpenSSL 查看证书详情,确认覆盖范围:
openssl x509 -in cert.pem -text -noout | grep -A1 "Subject Alternative Name"
若显示 DNS:*.example.com 则为通配符;若列出多个独立域名则为多域名证书。也可使用 curl 验证握手:
curl -vI https://sub.example.com 2>&1 | grep "subject:"
浏览器地址栏锁图标点击后也可查看证书信息。
常见坑
1. 三级子域支持:通配符证书仅支持同级子域,*.example.com 不能保护 test.blog.example.com,需单独申请 *.blog.example.com。
2. 私钥安全:通配符证书私钥泄露会导致所有子域受影响,需更严格保管。
3. 数量限制:多域名证书通常有域名数量上限(如 2-250 个),超出需额外付费或升级。
4. 多服务器同步:修改通配符证书后,若未同步到所有负载均衡节点,会导致部分用户访问报错。
参考来源
1. CA/Browser Forum Baseline Requirements: https://cabforum.org/
2. OpenSSL Certificate Commands: https://www.openssl.org/docs/
3. Let's Encrypt Wildcard Certificates: https://letsencrypt.org/docs/