多域名SSL证书(也称为SAN证书,Subject Alternative Name)可以在一个证书中保护多个不同的域名。这些域名可以是完全不同的域名,也可以是同一域名的不同子域名。本文将详细介绍如何申请多域名SSL证书,包括申请流程、域名添加、验证方式和配置方法。
一、什么是多域名证书?
1. 多域名证书的定义
多域名证书(Multi-Domain Certificate)使用SAN(Subject Alternative Name)扩展来保护多个域名。证书中包含一个主域名和多个备用域名。
2. 多域名证书的保护范围
可以保护的域名类型:
- ✅ 完全不同的域名:example.com、example.net、another-site.com
- ✅ 同一域名的不同子域名:example.com、www.example.com、api.example.com
- ✅ 混合类型:example.com、www.example.com、example.net
3. 多域名证书的优势
- ✅ 一个证书保护多个域名
- ✅ 管理方便,只需管理一张证书
- ✅ 证书更新时只需更新一次
- ✅ 适合拥有多个域名的场景
4. 多域名证书的限制
- ❌ 添加新域名需要重新申请证书
- ❌ 证书中包含所有域名,如果某个域名泄露可能影响其他域名
- ❌ 价格通常比单域名证书高
二、多域名证书的申请要求
1. 支持的CA
免费多域名证书:
- Let's Encrypt(通过OHTTPS、acme.sh等)
- FreeSSL.cn
付费多域名证书:
- DigiCert
- Sectigo
- GlobalSign
- 其他商业CA
2. 域名数量限制
免费证书:
- Let's Encrypt:每个证书最多100个域名
- FreeSSL.cn:根据平台规定
付费证书:
- 通常支持2-250个域名
- 价格随域名数量增加
3. 验证方式
多域名证书支持多种验证方式:
- DNS验证
- HTTP验证
- 邮箱验证(部分CA)
三、使用OHTTPS申请免费多域名证书
1. 创建证书申请
- 登录OHTTPS平台
- 进入"证书管理"
- 点击"创建证书"
- 选择验证方式
2. 填写域名信息
主域名:
- 输入主域名,如:example.com
添加其他域名:
- 点击"添加域名"
- 输入要添加的域名
- 可以添加多个域名
示例:
- 主域名:example.com
- 其他域名:
- www.example.com
- api.example.com
- blog.example.com
- example.net
3. 完成域名验证
DNS授权验证模式:
- 选择已创建的DNS授权
- 系统自动为每个域名添加DNS验证记录
- 等待所有域名验证完成
免DNS授权验证模式:
- 系统显示每个域名需要添加的CNAME记录
- 在DNS服务商处为每个域名添加CNAME记录
- 等待DNS解析生效
- 系统自动完成验证
HTTP验证模式:
- 系统显示每个域名需要创建的验证文件
- 在服务器上为每个域名创建验证文件
- 确保可以通过HTTP访问验证文件
- 系统自动完成验证
4. 等待证书签发
所有域名验证通过后,系统自动申请证书:
- 通常几分钟内完成
- 证书有效期90天
- 支持自动更新
四、使用acme.sh申请多域名证书
1. 申请多域名证书
~/.acme.sh/acme.sh --issue \
-d example.com \
-d www.example.com \
-d api.example.com \
-d blog.example.com \
--webroot /var/www/html
2. DNS验证方式
export CF_Email="your-email@example.com"
export CF_Key="your-api-key"
~/.acme.sh/acme.sh --issue \
-d example.com \
-d www.example.com \
-d api.example.com \
--dns dns_cf
3. 安装证书
~/.acme.sh/acme.sh --install-cert \
-d example.com \
--key-file /path/to/key.pem \
--fullchain-file /path/to/fullchain.pem \
--reloadcmd "systemctl reload nginx"
五、使用Certbot申请多域名证书
1. HTTP验证方式
sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com \
-d www.example.com \
-d api.example.com \
-d blog.example.com
2. DNS验证方式
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d example.com \
-d www.example.com \
-d api.example.com
六、多域名证书的配置
1. Nginx配置
单个server块配置多个域名:
server {
listen 443 ssl;
server_name example.com www.example.com api.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# 其他配置...
}
多个server块共享证书:
# 第一个域名
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# 其他配置...
}
# 第二个域名
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# 其他配置...
}
2. Apache配置
单个VirtualHost配置多个域名:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com api.example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/private.key
SSLCertificateChainFile /path/to/chain.pem
</VirtualHost>
多个VirtualHost共享证书:
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/private.key
SSLCertificateChainFile /path/to/chain.pem
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/private.key
SSLCertificateChainFile /path/to/chain.pem
</VirtualHost>
七、多域名证书的使用场景
1. 多品牌网站
场景:
- 一个公司拥有多个品牌
- 每个品牌使用不同的域名
- 如:brand1.com、brand2.com、brand3.com
优势:
- 一个证书保护所有品牌域名
- 统一管理证书
2. 主域名和子域名
场景:
- 主域名和多个子域名需要保护
- 如:example.com、www.example.com、api.example.com、blog.example.com
优势:
- 一个证书保护所有域名
- 简化证书管理
3. 不同顶级域名
场景:
- 拥有多个顶级域名
- 如:example.com、example.net、example.org
优势:
- 一个证书保护所有顶级域名
- 减少证书数量
八、多域名证书的注意事项
1. 域名规划
提前规划:
- 在申请证书前,确定需要保护的所有域名
- 添加新域名需要重新申请证书
- 建议预留一些域名位置
域名数量:
- 注意证书的域名数量限制
- 不要添加不需要的域名
- 定期清理不需要的域名
2. 验证要求
所有域名都需要验证:
- 每个域名都需要通过验证
- 如果某个域名验证失败,整个证书申请失败
- 确保所有域名都可以正常验证
验证方式可以不同:
- 不同域名可以使用不同的验证方式
- 如:部分域名使用DNS验证,部分使用HTTP验证
3. 证书更新
更新时所有域名都需要重新验证:
- 证书更新时,所有域名都需要重新验证
- 如果使用DNS授权,可以自动完成
- 如果使用免DNS授权,需要手动更新所有域名的DNS记录
九、常见问题
1. 如何添加新域名
问题:证书申请后,如何添加新域名?
解决方法:
- 多域名证书不支持动态添加域名
- 需要重新申请包含新域名的证书
- 建议在申请时预留域名位置
2. 部分域名验证失败
问题:多个域名中,部分域名验证失败怎么办?
解决方法:
- 检查失败的域名验证配置
- 确保DNS记录或HTTP验证文件正确
- 重新提交验证
3. 证书包含不需要的域名
问题:证书中包含不需要的域名怎么办?
解决方法:
- 证书一旦签发,无法删除域名
- 需要重新申请不包含该域名的证书
- 建议在申请前仔细规划域名列表
十、多域名证书 vs 通配符证书
1. 对比
| 特性 | 多域名证书 | 通配符证书 |
|---|---|---|
| 保护范围 | 明确的域名列表 | 所有一级子域名 |
| 添加新域名 | 需重新申请 | 无需操作 |
| 主域名保护 | ✅ 可以包含 | ❌ 不包含 |
| 不同顶级域名 | ✅ 支持 | ❌ 不支持 |
| 价格 | 中等 | 较高 |
2. 选择建议
选择多域名证书:
- 需要保护完全不同的域名
- 域名数量固定且明确
- 需要保护主域名
选择通配符证书:
- 有大量子域名
- 子域名动态增加
- 只需要保护子域名
总结
多域名SSL证书是保护多个域名的理想选择,特别适合拥有多个品牌、多个顶级域名或主域名加多个子域名的场景。通过OHTTPS、acme.sh或Certbot等工具,可以轻松申请和管理多域名证书。
关键要点:
- ✅ 一个证书保护多个域名
- ✅ 所有域名都需要验证
- ✅ 添加新域名需要重新申请
- ✅ 建议提前规划域名列表
- ✅ 使用自动化工具管理证书
如果您需要申请多域名证书,推荐使用OHTTPS平台,它提供了友好的界面和自动化管理功能,让多域名证书的申请和管理变得简单高效。
OHTTPS: 免费HTTPS证书/SSL证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证、文件验证等)申请免费的HTTPS证书/SSL证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书/SSL证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书/SSL证书自动化部署至阿里云、腾讯云、群晖NAS、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等,实现HTTPS证书/SSL证书的一站式申请、更新、部署、监控和管理。