You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04+Nginx环境下Let's Encrypt证书显示所有虚拟主机域名的问题及单独泛域名证书申请咨询

Ubuntu 20.04+Nginx环境下Let's Encrypt证书显示所有虚拟主机域名的问题及单独泛域名证书申请咨询

嗨,我来帮你理清这个问题的来龙去脉,以及对应的解决办法:

首先明确一点:这完全不是DNS记录的问题!你看到证书里同时显示两个域名的所有SAN条目,根本原因是当初使用Certbot申请证书时,把domain1.com、www.domain1.com、domain2.com、www.domain2.com这四个域名都塞进了同一张证书里——Certbot当时的建议只是把你服务器上已配置的所有Nginx虚拟主机域名列出来,如果你没仔细看就确认了,就会生成包含所有这些域名的SAN证书,所以现在查看证书时才会显示全部域名。

接下来给你分步说明怎么解决,以及如何为每个域名单独申请泛域名证书:

第一步:删除现有的联合证书

先查看当前服务器上的所有Certbot证书,找到那个包含四个域名的证书:

sudo certbot certificates

从输出里找到对应证书的名称(看Domains字段确认是包含四个域名的那条,证书名称可能类似domain1.com-0001),然后执行删除命令:

sudo certbot delete --cert-name [你的证书名称]

(把[你的证书名称]替换成实际的证书名)

第二步:为每个域名单独申请泛域名证书

泛域名证书(*.domainX.com)需要使用ACME v2协议,用Nginx插件的HTTP验证就能快速完成(前提是你的Nginx配置已经正确对应域名)。下面是具体命令:

为domain1.com申请泛域名证书

sudo certbot certonly --nginx --server https://acme-v02.api.letsencrypt.org/directory -d domain1.com -d *.domain1.com

这个命令会自动通过Nginx插件完成验证,生成包含domain1.com和所有子域(比如www、blog、mail等)的证书。

为domain2.com申请泛域名证书

同样执行类似命令:

sudo certbot certonly --nginx --server https://acme-v02.api.letsencrypt.org/directory -d domain2.com -d *.domain2.com

第三步:更新Nginx虚拟主机配置

确保每个域名的Nginx配置文件里,指定对应证书的路径:

比如domain1.com的Nginx配置文件(通常在/etc/nginx/sites-available/目录下)里,SSL部分要写:

ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;

domain2.com的配置文件则对应改为:

ssl_certificate /etc/letsencrypt/live/domain2.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain2.com/privkey.pem;

修改完成后,重启Nginx使配置生效:

sudo systemctl restart nginx

这样处理之后,当你访问https://domain1.com查看证书时,只会看到domain1.com和*.domain1.com的SAN条目,domain2相关的域名就不会出现在里面了;反过来访问domain2的网站也是一样的效果。

备注:内容来源于stack exchange,提问作者user174174

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:12:32