在服务器维护中,常因架构或服务变更,需要删除证书中某些域名(子域名),避免不必要的安全风险与维护成本。本文总结了使用 Certbot 安全移除域名的标准流程,适用于所有使用多域名(SAN)证书的场景。


🔎 背景

某服务器最初申请了包含十多个子域名的多域名证书(例如主域名、文件服务、聊天系统、监控面板等),后来由于业务调整,有三个子域名不再需要,计划将其从证书中移除。


🛠️ Certbot 的逻辑

Certbot 并不支持「直接编辑」证书来删除域名,而是通过重新申请证书并覆盖原证书来实现域名的更新。

核心原则:

在重新申请时,只需要在新的域名列表中省略要移除的域名,Certbot 会自动生成新的证书并移除不需要的域名。


✅ 操作流程

1️⃣ 查看当前证书

执行以下命令查看当前证书和域名列表:

certbot certificates

记录证书名称(比如 example.com),并核对所有包含的域名。


2️⃣ 准备新的域名列表

只保留当前仍在使用的域名。例如,原证书包含:

example.com
www.example.com
file.example.com
chat.example.com
db.example.com
app.example.com
...

如果计划移除 file.example.comdb.example.comwww.example.com,则新的域名列表只包含需要继续使用的域名。


3️⃣ 重新申请证书

根据实际环境选择使用 --nginx--apache--standalone 等插件,例如 Nginx:

certbot certonly --nginx \
-d example.com \
-d chat.example.com \
-d app.example.com \
... \
--cert-name example.com

这里使用 --cert-name 参数可以直接覆盖现有同名证书,而不是生成新证书。


4️⃣ 验证更新

执行以下命令确认新证书的域名列表已更新,且不包含被移除的域名:

certbot certificates

5️⃣ 重载或重启服务

完成证书更新后,需要重载 Web 服务(如 Nginx 或 Apache),让新证书立即生效。

systemctl reload nginx
# 或者
systemctl reload apache2

💡 注意事项

  • 不需要手动删除 /etc/letsencrypt/live/ 下的证书文件夹,Certbot 会自动更新并管理文件。
  • 若开启了 HSTS 或强制 HTTPS 策略,需确认 DNS 和应用配置也一并更新,以防出现访问异常。
  • 所有删除的域名,如未关闭相关服务或 DNS 记录,用户仍可能访问到旧内容,需要同步调整。

✅ 总结

通过在重新申请命令中省略不需要的域名,Certbot 会自动更新证书并移除不再使用的域名。这种方式安全、简单、易于维护,适合所有多域名场景。

Leave a Reply

Your email address will not be published. Required fields are marked *