在维护服务器过程中,经常需要为多个主域名和子域名申请和更新 SSL 证书。Let’s Encrypt 提供了免费证书,而 Certbot 是其官方推荐的客户端,支持自动签发、续期和管理。
以下记录一次在 Linux 服务器上管理多证书、删除旧证书的完整流程。
多域名证书申请
通过 Certbot 的 standalone 模式申请多域名证书,可一次性覆盖主域和多个子域,例如:
certbot certonly --standalone \
-d example.net \
-d www.example.net \
-d mail.example.net \
-d app1.example.net \
-d app2.example.net \
-d app3.example.net \
-d app4.example.net \
-d app5.example.net \
-d app6.example.net \
-d app7.example.net \
-d app8.example.net \
-d app9.example.net \
--agree-tos \
-m user@examplemail.com \
--cert-name example.net
执行后,证书和私钥会保存在 /etc/letsencrypt/live/example.net/,同时会自动设置续期任务。
查看现有证书
可以使用以下命令列出服务器当前存在的所有证书:
certbot certificates
输出会显示每张证书的名称、包含的域名、到期时间和文件路径,便于集中管理。
多证书共存
Certbot 支持在同一台服务器上同时存在多张证书,每张证书可以绑定不同(或部分相同)的域名集合。例如,可以分别为 example.net 和 anotherdomain.org 签发证书,并根据需要在不同服务中引用。
需要注意的是,每张证书在续期时,所有包含的域名必须解析正常,否则会导致续期失败。
删除不再需要的证书
当某个域名或整张证书不再需要时,可以直接删除对应证书,操作示例如下:
certbot delete --cert-name example.net
执行后,会删除以下内容:
/etc/letsencrypt/live/example.net//etc/letsencrypt/archive/example.net//etc/letsencrypt/renewal/example.net.conf
完成后,建议再次运行 certbot certificates 进行确认。
删除后的服务调整
证书删除后,如果服务器(如反向代理、邮件系统、管理面板等)配置中仍引用该证书,需修改配置文件,注释或移除 ssl_certificate 和 ssl_certificate_key,并重新加载或重启服务,例如:
systemctl reload nginx
总结
Certbot 在多域名和多服务环境中提供了免费、灵活、高度自动化的证书管理方案。
当域名变动或子域不再需要时,可通过重新签发或删除旧证书,保持服务器配置的简洁和安全。