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

CentOS 7.4下Certbot批量生成SSL证书通用名称重复问题求助

问题分析与解决方案

首先,这个问题不是基础域名导致的,而是你使用的Certbot 0.22.2版本的默认行为:当你一次性选择多个站点执行certbot --apache时,它会生成一张多域名SAN证书(Subject Alternative Name证书),把所有选中的域名都添加到证书的SAN扩展列表中,但证书的通用名称(CN)只会设置为你选中的第一个站点域名。

虽然现在主流浏览器会优先匹配SAN列表里的域名,而不是只看CN字段,但如果你的需求是让每个站点都拥有独立的SSL证书(浏览器地址栏显示对应站点的独立域名),可以按照以下步骤操作:

1. 确认当前证书状态

先运行以下命令查看现有证书的详细信息,确认所有域名是否都在同一张证书里:

sudo certbot certificates

输出里会显示证书包含的所有域名,如果所有30个站点域名都列在同一张证书的Domains字段下,就说明是生成了多域名SAN证书。

2. 清理原有多域名证书(可选但推荐)

如果不想保留这张包含所有域名的证书,可以先撤销并删除它:

# 替换成你第一个站点的域名(也就是证书的CN名称)
sudo certbot revoke --cert-name your-first-domain.com
sudo certbot delete --cert-name your-first-domain.com

3. 为每个站点生成独立证书

你有两种方式实现:

方式一:逐个手动生成

对每个站点单独执行Certbot命令,指定对应的域名:

sudo certbot --apache -d site1.com
sudo certbot --apache -d site2.com
# 依次类推直到所有站点完成

这种方式适合域名数量不多的情况,或者你需要针对个别站点做特殊配置。

方式二:批量自动生成

如果站点数量多,可以通过脚本批量处理。先提取所有Apache站点的ServerName(假设你的站点配置都在/etc/httpd/conf.d/目录下),然后循环执行Certbot命令:

for domain in $(grep -r "ServerName" /etc/httpd/conf.d/ | awk '{print $2}'); do
    sudo certbot --apache -d $domain --non-interactive --agree-tos --email your-email@example.com
done
  • --non-interactive:非交互模式,不需要手动确认
  • --agree-tos:自动同意服务条款
  • --email:替换成你的邮箱,用于证书到期提醒

执行完成后,每个站点都会拥有独立的SSL证书,Apache配置也会自动更新为指向对应站点的证书文件。

额外建议:升级Certbot版本

你使用的Certbot 0.22.2是比较老旧的版本(发布于2018年),新版本的Certbot在多站点证书管理上更加灵活,支持更精细的配置(比如指定每个证书的名称、自动判断生成独立或SAN证书等)。如果条件允许,建议升级到最新稳定版,能避免很多旧版本的兼容性问题。

内容的提问来源于stack exchange,提问作者Farmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:11:16