通配符SSL证书完整指南
Protecting multiple subdomains with a single certificate
目录
如果您运营一个具有多个子域名的网站,例如 blog.example.com、shop.example.com 和 api.example.com,用HTTPS保护所有这些域名可能既昂贵又复杂。最经济有效和最简单的解决方案是通配符SSL证书。本指南解释了什么是通配符SSL、它如何工作,以及如何为您的情况选择正确的证书。
什么是通配符SSL证书?与单域SSL有何不同?
通配符SSL证书旨在保护(加密)一个主域名和该主域名下的无限数量的子域名,使用由星号 * 表示的通配符模式。
例如,*.example.com 的通配符SSL可以保护:
blog.example.comshop.example.comapi.example.commail.example.com- 以及无限的其他子域名
相比之下,单域SSL仅保护一个域名,例如 example.com。如果您想保护 blog.example.com,您需要购买单独的证书,这样既昂贵又难以管理。
关键区别:单域SSL = 仅保护1个域名 / 通配符SSL = 用一个证书保护主域名和所有子域名
理解 *.domain.com:覆盖哪些子域名(以及不覆盖哪些)?
这是许多人感到困惑的地方。通配符SSL *.example.com 仅覆盖1个子域名级别,而不是每个可能的级别。
受保护的子域名:
blog.example.com✓shop.example.com✓www.example.com✓mail.example.com✓api.example.com✓test123.example.com✓
不受保护的:
sub.blog.example.com✗ (深于1级)deep.sub.blog.example.com✗ (深于1级)example.com✗ (主域名 - 取决于配置)
如果您需要保护更深的子域名级别,如 sub.blog.example.com,您需要为 *.blog.example.com 购买额外的通配符SSL,或改用多域名SSL。
重要:*.example.com 仅覆盖 xxx.example.com,不覆盖 xxx.yyy.example.com 或主域名 example.com(取决于配置)
通配符SSL vs 多域名SSL (SAN):选择哪一个?
除了通配符SSL外,另一个选项是多域名SSL(主体备用名称 - SAN)。此证书允许您在单个证书中指定多个域名,但数量有限,不像通配符没有限制。
| 因素 | 通配符SSL | 多域名SSL |
|---|---|---|
| 无限域名保护 | ✓ (仅1级) | ✗ (有限) |
| 保护子域名 | ✓ 理想 | △ 需指定每个 |
| 保护多个域名 | ✗ 否 | ✓ 是 |
| 价格 | 中等 | 更昂贵 |
选择通配符SSL如果:您有多个相同域名的子域名,并希望轻松管理。
选择多域名SSL如果:您有多个不同的域名(example.com, myshop.com, myapi.net),但没有很多子域名。
免费的Let's Encrypt通配符证书
Let's Encrypt是世界上最值得信赖和免费的SSL证书颁发机构。自2016年以来,Let's Encrypt为公众提供了免费的通配符证书,其安全性相当于商业CA。
获得Let's Encrypt通配符的基本步骤:
- 使用支持ACME协议的工具,如 Certbot
- 配置使用 DNS-01 Challenge (而非 HTTP-01)
- 通过添加DNS TXT记录向Let's Encrypt证明域名所有权
- 获得有效期为90天的通配符证书
重要:Let's Encrypt通配符仅需要DNS-01 Challenge,不支持HTTP-01。您需要一种添加DNS TXT记录的方法(通过DNS管理系统或API)
示例Certbot命令:
sudo certbot certonly --dns-cloudflare \
-d example.com -d *.example.com \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini
Certbot将自动添加DNS TXT记录(如果您配置了Cloudflare API密钥)并发放免费的通配符证书。
Let's Encrypt通配符的优点:
- ✓ 完全免费
- ✓ 受100万用户信任
- ✓ 提供自动续期
- ✓ 每次有效期90天
Let's Encrypt通配符的限制:
- ✗ 必须每90天续期一次
- ✗ 需要DNS Challenge设置(比HTTP更复杂)
- ✗ 无EV(扩展验证)- 无法在浏览器中显示"已验证的公司名称"
从商业证书颁发机构购买通配符SSL
如果您需要具有法律约束力的通配符SSL且带有EV或1-3年有效期,您可以从Comodo、Sectigo、GlobalSign或DigiCert等商业CA购买。
通配符SSL平均价格:
- 通配符DV(域名验证):$25-60/年
- 通配符OV(组织验证):$45-120/年
- 通配符EV(扩展验证):$90-240+/年
主要区别:
- DV(域名验证):仅验证域名所有权。快速、方便、经济。
- OV(组织验证):验证公司信息。中等价格,在某些浏览器中显示组织名称。
- EV(扩展验证):彻底验证域名和公司。最昂贵,在浏览器中显示"已验证组织"和绿色栏。
对于大多数用户来说,DV通配符SSL就足够了,因为DV、OV和EV的加密安全性相同。区别仅在于"公司身份验证"。
如何在Apache/Nginx/DirectAdmin上安装通配符SSL
一般步骤(Apache、Nginx、DirectAdmin):
步骤1:获取证书和私钥文件
无论来自Let's Encrypt还是商业CA,您都会获得两个文件:
certificate.crt(或 .pem) - 证书private.key- 私钥
步骤2:上传到服务器
scp certificate.crt [email protected]:/etc/ssl/certs/
scp private.key [email protected]:/etc/ssl/private/
步骤3:配置Apache
编辑配置文件,例如 /etc/apache2/sites-available/default-ssl.conf:
<VirtualHost *:443>
ServerName example.com
ServerAlias *.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
</VirtualHost>
然后重启Apache:
sudo systemctl restart apache2
步骤4:配置Nginx
编辑配置文件,例如 /etc/nginx/sites-available/default:
server {
listen 443 ssl;
server_name example.com *.example.com;
ssl_certificate /etc/ssl/certs/certificate.crt;
ssl_certificate_key /etc/ssl/private/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
然后重启Nginx:
sudo systemctl restart nginx
步骤5:配置DirectAdmin(最简单)
如果您使用DirectAdmin,只需:
- 进入管理员面板 → 证书管理
- 选择"安装证书"
- 粘贴证书、密钥和CA证书
- 指定域名:
*.example.com - 点击"安装"
DirectAdmin将自动配置Apache/Nginx设置。
续期通配符SSL证书
所有SSL证书都有到期日期。大多数的有效期为1年(商业CA)或90天(Let's Encrypt)。
续期Let's Encrypt(自动):
Let's Encrypt通过cron任务提供自动续期:
0 2 * * * /usr/bin/certbot renew --quiet
此命令在每天凌晨2点检查证书,并自动续期任何在30天内到期的证书。
续期商业CA证书:
- 登录您的CA的控制面板
- 找到要续期的证书
- 选择"续期"并完成支付
- 按照验证步骤进行(通常为电子邮件批准)
- 下载新证书
- 在服务器上安装(如上步骤6)
提示:在到期前60天设置提醒,以避免忘记续期。
通配符SSL安全考虑:如果私钥被泄露怎么办?
通配符SSL的主要风险是如果您的私钥被盗或泄露,攻击者可以冒充您域名下的任何子域名。
示例:如果您有 *.bank.com 的通配符SSL,并且私钥泄露,攻击者可能:
- 创建虚假的
paypal.bank.com看起来合法 - 从访问该虚假网站的用户那里窃取数据
保护方法:
- ✓ 仅限Root和服务器管理员访问私钥
- ✓ 使用文件权限:
chmod 600 /etc/ssl/private/private.key - ✓ 将私钥安全存储,不与多个服务器共享
- ✓ 如果服务器被泄露,立即撤销证书
- ✓ 对高价值服务器使用硬件安全模块(HSM)
- ✓ 联系您的CA了解撤销和更换证书程序
重要:通配符SSL的管理风险比单域SSL高,因为一个私钥保护多个域名。
通配符SSL值得吗?与免费Let's Encrypt相比
简短回答:如果您可以使用Let's Encrypt,就不要花钱。但在某些情况下,商业通配符SSL是有意义的。
Let's Encrypt通配符最理想的情况:
- 多个子域名需要免费通配符保护
- 服务器可以为challenge配置DNS API
- 接受90天的续期周期
- 不需要EV(不需要浏览器中的"已验证公司"徽章)
商业通配符SSL更好的情况:
- 需要EV(扩展验证)以在浏览器中显示"已验证公司"
- 需要OV证书显示证书中的业务验证
- 每年仅续期一次,而不是4次
- 希望有担保覆盖(某些商业CA提供,Let's Encrypt没有)
- 服务器不支持ACME API续期
| 条件 | Let's Encrypt | 商业通配符 |
|---|---|---|
| 费用 | 免费 | $25-240+/年 |
| 加密安全 | 等价 | 等价 |
| EV(绿色栏) | 无 | 有(EV证书) |
| 续期自动化 | 100%自动 | CA依赖 |
| 支持担保 | 无 | 有(某些CA) |
结论:对于个人使用、小型和中型企业,免费的Let's Encrypt通配符是最佳选择。如果您需要专业验证和EV徽章,商业通配符SSL值得投资。