用户为新增子域名扩展或重新申请SSL证书,是网站管理中常见的任务。核心在于根据你现有证书的类型和需求,选择最合适的方案。
以下是清晰的操作流程和决策指南:
第一步:诊断现有证书情况
首先,登录你的服务器或证书管理平台,检查当前证书的详细信息:
bash
使用openssl命令查看证书信息
openssl x509 -in /path/to/your/certificate.crt -text -noout
重点关注:
1. 证书类型:
单域名证书:只保护一个特定域名(如 `www.example.com`)。
多域名证书(SAN/UCC):保护多个列出的域名。
通配符证书:保护一个主域及其所有同级子域(如 `*.example.com`)。
2. 包含的域名:在 `Subject Alternative Names` 字段中查看已受保护的所有域名。
3. 有效期:确保证书没有临近过期。
第二步:选择最佳方案(决策图)
根据你的现有证书类型和需求,选择下表中的方案:
现有证书类型 | 推荐方案 | 操作简述 | 优缺点
多域名证书 (SAN) 扩展原有证书 向原证书添加新的子域名,重新签发。 优点:一张证书管理多个域名,方便。<br>缺点:域名数量通常有限制。
通配符证书 通常无需操作 检查新增子域名是否在通配符覆盖范围内(如 `*.example.com` 覆盖 `shop.example.com`)。 优点:一劳永逸,自动保护所有同级子域。<br>缺点:不保护下级子域(如 `*.*.example.com`)。
单域名证书 申请新证书 申请一张新的多域名证书或通配符证书,替换旧证书。 优点:从根本上解决问题。<br>缺点:需要更换服务器上的证书文件。
证书即将过期 重新申请并包含所有域名 无论何种类型,在续期时规划好,将所有需要的域名(主域+所有子域)一次性加入新证书。 最佳实践**,统一管理。
第三步:分步操作指南
方案A:扩展原有的多域名证书(推荐)
如果你已有多域名证书,这是最便捷的方式。
1. 登录证书颁发机构(CA)管理后台(如 Let‘s Encrypt、DigiCert、Sectigo 等)。
2. 找到证书重新签发(Reissue)或修改(Modify)选项。
3. 在域名列表中添加新的子域名(例如,新增 `api.example.com`)。
4. 完成验证:根据CA要求,通过DNS添加TXT记录或上传验证文件的方式,验证你对新增子域名的所有
5. 下载新证书:验证通过后,CA会签发包含新旧所有域名的新证书文件(通常包括 `.crt`、`.key` 和可能有的 `.ca-bundle` 文件)。
6. 部署到服务器:替换服务器上的旧证书文件,并重载Web服务(如Nginx、Apache)。
方案B:申请全新的证书(适用于单域名证书或首次申请)
1. 生成证书签名请求(CSR):
bash
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.csr
在生成CSR时,**Common Name** 可以写主域名,但关键是后期通过CA管理界面添加所有需要的**主题备用名称(SAN)。
2. 选择CA并购买/申请证书:
商业CA:提供更强的信任和保障。
Let’s Encrypt(免费):使用 `certbot` 工具自动化申请和部署,支持多域名和通配符。
bash
申请一个包含多个域名的证书
certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com -d api.example.com -d shop.example.com
3. 提交CSR并完成域名验证。
4. 下载并部署新证书。
方案C:申请/换用通配符证书(一劳永逸)
如果你有许多同级子域名,或未来会频繁添加,这是最佳选择。
注意:通配符证书(`*.example.com`)不保护主域名(`example.com`),因此通常需要将主域名也作为SAN添加进去。
申请通配符证书时,DNS验证是强制性的。你需要在域名的DNS根目录下添加指定的TXT记录以证明所有权。
Let‘s Encrypt 也提供免费的通配符证书:
bash
certbot certonly --manual --preferred-challenges=dns -d *.example.com -d example.com
根据提示,在DNS管理界面添加TXT记录,验证成功后即可获取证书。
第四步:服务器部署与测试
1. 备份:务必备份服务器上原有的证书和密钥文件。
2. 部署:将新的证书文件(`.crt` 或 `.pem`)和私钥文件(`.key`)上传到服务器指定位置,并更新Web服务器配置(如Nginx的 `ssl_certificate` 和 `ssl_certificate_key` 指令)。
3. 重载服务:
bash
Nginx
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
Apache
sudo apache2ctl configtest
sudo systemctl reload apache2
4. 测试验证:
使用浏览器访问 `https://你的新增子域名`,检查锁标志。
使用在线工具(如 [SSL Labs’ SSL Test](https://www.ssllabs.com/ssltest/))进行全面检测,确保证书安装正确且包含所有目标域名。
总结与建议
规划先行:如果你的业务会使用多个子域名,初始就申请多域名证书或通配符证书可以节省大量后续工作。
自动化管理:对于使用Let’s Encrypt的用户,充分利用 `certbot` 的自动续期和部署脚本,可以极大减轻管理负担。
统一到期日:尽量让所有相关域名的证书在同一张证书上,便于管理和续期。
安全第一:私钥(`.key`文件)必须严格保密,切勿泄露。
通过以上步骤,用户可以系统化地为新增子域名完成SSL证书的扩展或重新申请,确保所有服务均处于HTTPS的安全保护之下。