用户为新增子域名扩展或重新申请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的安全保护之下。