多张证书到期时间不一致时,须按域名/证书粒度独立管理生命周期:每个域名使用独立证书目录(如 /etc/nginx/ssl/site-a.com/)和专属 Nginx server 块,通过 certbot renew --cert-name site-a.com 精准续期,配合 --deploy-hook 重载,并用 certbot certificates 查看各证到期时间以排期操作。
多张证书到期时间不一致时,不能统一“一刀切”续期或替换,否则容易误更新有效证书、触发 ACME 频率限制,甚至因路径冲突导致 Nginx 加载失败。关键在于按域名/证书独立管理生命周期,隔离操作,统一部署路径。
每个域名(或证书组)应有独立的证书目录和明确的 Nginx 配置块:
/etc/nginx/ssl/site-a.com/、/etc/nginx/ssl/api.example.net/,避免混放server 块中,ssl_certificate 和 ssl_certificate_key 必须指向各自目录下的固定文件名(如 fullchain.pem 和 privkey.pem),不共用同一组路径-d a.com -d b.com),除非它们本就属于同一张多域名证书且到期日一致Certbot 支持按域名精准触发续期,跳过未到期证书:
sudo certbot renew --cert-name site-a.com --dry-run 测试单个证书续期流程是否通sudo certbot renew --cert-name site-a.com --deploy-hook "nginx -t && nginx -s reload",只影响该域名对应配置sudo certbot certificates,输出含 Expiry Date 字段,便于排期多个证书分布在不同 server 块中,但 nginx -s reload 会整体加载全部配置。需确保:
server 块的证书路径真实存在、权限正确(Nginx 用户可读)、格式无误,否则 reload 会失败并回退到旧配置server 块仍引用旧路径——只要该路径下文件未被删除或覆盖,服务不受影响nginx -t 全局校验当有多台 Nginx 节点时,分批更新必须带“节点+证书”双重维度控制:
site-a.com 执行续期 + reload,验证 openssl s_client -connect site-a.com:443 -servername site-a.com | openssl x509 -noout -dates 返回新有效期/etc/nginx/ssl/site-a.com/),并仅在这些节点执行 reload(不触发其他证书的变更)