如用户为子域名配置通配符SSL证书,是管理多子域名网站时最高效的加密方案。它的核心原理是使用一张证书保护一个主域名下的所有一级子域名(例如  `blog.example.com`  和  `shop.example.com`)。

整个配置流程主要包含以下四个关键步骤:

步骤      核心任务        关键操作与说明  

1.  申请前准备      明确需求与生成CSR  |  确认证书覆盖范围(如  `*.example.com`),使用OpenSSL等工具生成证书签名请求(CSR)和私钥文件(`.key`)。请务必妥善保管私钥文件。  

2.  申请与验证        DNS验证域名所有权  |  将CSR提交给证书颁发机构(CA),并选择DNS-01验证方式。在你的域名DNS管理平台中添加一条主机记录为  `_acme-challenge`  的TXT解析记录,记录值为CA提供的验证字符串。  

3.  证书部署      在服务器上安装证书  |  下载CA签发的证书文件(如  `.crt`、`.pem`),将其与私钥文件上传至服务器,并根据Web服务器(如Nginx、Apache)的类型修改配置文件,指定证书和私钥的路径。  

4.  验证与维护        测试与自动化续期  |  使用在线工具(如SSL  Labs)检查部署是否正确。若使用Let's  Encrypt等免费证书,需设置定时任务(如Crontab)自动执行续期命令,避免证书过期。  

一、申请前须知

在开始之前,有几个关键点需要你了解:

覆盖范围限制:通配符证书使用  `*`  符号,但它只能匹配一级子域名。例如,`*.example.com`  可以有效保护  `mail.example.com`  和  `www.example.com`,但无法保护  `a.b.example.com`  这样的二级或多级子域名。

验证方式:申请通配符证书必须通过DNS验证(添加TXT记录)来证明你对域名的所有权,因为它需要验证你能否控制域名的DNS解析记录。

二、在主流Web服务器上部署

以下是两种最主流Web服务器的配置参考,你可以根据自己的情况选择。

Nginx  服务器配置示例

1.    将证书文件(如  `fullchain.pem`)和私钥文件(如  `privkey.pem`)上传到服务器目录,例如  `/etc/nginx/ssl/`。

2.    编辑Nginx配置文件(通常在  `/etc/nginx/nginx.conf`  或  `/etc/nginx/conf.d/`  下),在  `server`  块中添加或修改以下内容:

        ```nginx

        server  {

                listen  443  ssl;

                #  关键配置:同时监听主域名和泛域名

                server_name  example.com  *.example.com;

                #  指定证书和私钥文件的路径

                ssl_certificate  /etc/nginx/ssl/example.com/fullchain.pem;

                ssl_certificate_key  /etc/nginx/ssl/example.com/privkey.pem;

                #  其他配置...

        }

        ```

3.    保存文件后,执行  `nginx  -t`  测试配置语法是否正确。如果显示  `syntax  is  ok`,则执行  `systemctl  reload  nginx`  重载服务使配置生效。

Apache  服务器配置示例

1.    将证书文件(如  `domain_name_public.crt`)和私钥文件(如  `domain_name.key`)上传到服务器,例如  `/etc/ssl/cert/`  目录。

2.    编辑SSL虚拟主机配置文件(如  `/etc/httpd/conf.d/ssl.conf`  或  `/etc/apache2/sites-available/your-site-ssl.conf`):

        对于  Apache  2.4.8及更高版本,推荐将证书文件和证书链文件合并为一个  `.pem`  文件后,再进行配置。

            apache

        <VirtualHost  *:443>

                ServerName  example.com

                #  关键配置:使用  ServerAlias  来匹配所有子域名

                ServerAlias  *.example.com

                #  指定证书和私钥文件的路径

                SSLCertificateFile  /etc/ssl/cert/domain_name_fullchain.pem

                SSLCertificateKeyFile  /etc/ssl/cert/domain_name.key

                #  其他配置...

        </VirtualHost>

        ```

3.    保存文件后,使用  `apachectl  -t`  或  `httpd  -t`  测试配置语法。确认无误后,重启Apache服务(如  `systemctl  restart  httpd`  或  `systemctl  restart  apache2`)。

三、进阶技巧:自动化管理(以Let's  Encrypt为例)

对于技术爱好者或需要频繁更新子域名的场景,使用Let's  Encrypt这类免费CA配合自动化工具,可以极大简化管理。

1.    安装Certbot:在你的Linux服务器上安装Certbot工具及对应的Web服务器插件。

2.    申请证书:执行以下命令,Certbot会自动通过DNS验证(需DNS服务商支持API)并获取证书。

        bash

        sudo  certbot  certonly  --manual  --preferred-challenges  dns  -d  "*.example.com"  -d  "example.com"

        如果你使用的是Cloudflare、阿里云等支持API的DNS服务商,可以配置Certbot自动添加和删除TXT记录,实现全程自动化。

3.    设置自动续期:Let's  Encrypt证书有效期为90天。通过Crontab设置定时任务,可以让证书在到期前自动续期。

        bash

        #  编辑crontab文件

        sudo  crontab  -e

        #  添加以下行,代表每天凌晨3点尝试续期

        0  3  *  *  *  /usr/bin/certbot  renew  --quiet

        Certbot在续期成功后,会自动重新加载Web服务器配置。

四、常见问题排查

浏览器提示“证书不匹配”:这通常由两种情况导致:一是你访问了证书覆盖范围之外的子域名(如三级子域名),二是服务器配置中的  `server_name`  未正确包含  `*`  通配符。

浏览器提示“证书不受信任”或“证书链不完整”:这通常是因为未安装中间证书。请检查服务器配置,确保SSL证书链文件(如  `fullchain.pem`  或  `ca-bundle`)已被正确引用。

用户的Web服务器用的是Nginx还是Apache?或者用户目前在哪一步遇到了具体的困难?告诉我你的环境,我可以为你提供更针对性的配置建议。