是的,你的理解完全正确。一张包含正确SAN(Subject  Alternative  Name,主题备用名称)  的SSL证书,配合正确的Nginx配置,就可以同时保护  `example.com`  和  `www.example.com`。

具体配置的核心思路是:使用一张SAN证书,并在Nginx的单个`server`块中,通过`server_name`指令同时声明这两个域名。

一、Nginx配置示例

这是一个标准的配置示例:

```nginx

server  {

        listen  80;

        server_name  example.com  www.example.com;

        #  将所有HTTP请求重定向到HTTPS

        return  301  https://$host$request_uri;

}

server  {

        listen  443  ssl  http2;

        server_name  example.com  www.example.com;    #  关键:在此列出所有域名

        #  指向你的SAN证书和私钥

        ssl_certificate  /path/to/your/fullchain.pem;

        ssl_certificate_key  /path/to/your/private.key;

        #  其他SSL配置(TLS版本、加密套件等)

        ssl_protocols  TLSv1.2  TLSv1.3;

        ssl_ciphers  HIGH:!aNULL:!MD5;

        #  ...  网站根目录等配置

}

```

关键点解析:

      证书文件:`ssl_certificate`  和  `ssl_certificate_key`  指令指向你的SAN证书文件,只需指定一次,供所有列出的域名共用。

      `server_name`:在`server`块中,用空格分隔列出所有需要保护的域名,如  `example.com  www.example.com`。

      HTTP  跳转:建议额外配置一个监听80端口的`server`块,将所有HTTP请求永久重定向(301)到HTTPS版本,提升安全性。

二、核心要点与避坑指南

1.    确保证书SAN字段包含所有域名:这是最关键的一步。你需要确保在申请证书时,将  `example.com`  和  `www.example.com`  都添加到SAN列表中。

              验证方法:可以使用以下命令查看证书的SAN字段,确认是否包含所有目标域名。

                ```bash

                openssl  x509  -in  /path/to/your/fullchain.pem  -text  -noout  |  grep  -A1  "Subject  Alternative  Name"

                ```

                正确的输出应类似:`DNS:example.com,  DNS:www.example.com`。

2.    关于通配符证书的提醒:

              通配符证书(如  `*.example.com`)不能自动保护根域名  `example.com`。

              因此,若想同时保护这两个域名,必须使用SAN证书,并将根域名  `example.com`  显式加入SAN列表。

3.    配置风格选择:

              单个`server`块(推荐):将多个域名写在同一个`server_name`中,配置最简洁,不易出错。

              多个`server`块:也可以为每个域名建立独立的`server`块并指向相同的证书文件。这种方式更灵活,但配置稍显冗余。

三、总结

总而言之,要同时保护  `example.com`  和  `www.example.com`,你的操作步骤是:

1.    申请证书:向证书颁发机构(CA)申请一张SAN证书,务必在申请时同时填写  `example.com`  和  `www.example.com`。

2.    配置Nginx:在Nginx配置文件中,将这两个域名都写在同一个`server`块的`server_name`指令里,并指向你申请到的证书文件。

3.    验证与重载:使用  `nginx  -t`  测试配置无误后,执行  `nginx  -s  reload`  使其生效。

完成这三步,就可以用一张证书安全地保护你的主域名和www子域名了。