Come appare il messaggio
Failed to renew certificate cloud.example.com with error: Some challenges have failed.
All renewals failed. The following certificates could not be renewed:
/etc/letsencrypt/live/cloud.example.com/fullchain.pem (failure)Cause frequenti
- Il file di rinnovo usa
authenticator = standalone, ma nginx o Apache occupa già la porta 80. - Il percorso webroot o il web server è cambiato, quindi il file della sfida non è più raggiungibile sul dominio.
- Il timer di rinnovo o il job cron non gira, quindi il rinnovo non viene mai tentato.
- Un hook
pre,postodeployfallisce, ad esempio il reload di un servizio che non esiste più. - DNS, firewall o un record IPv6 non portano più a questo server per il dominio.
Verifica
- Quali certificati esistono e quando scadono?
sudo certbot certificates - Prova l'intero rinnovo senza cambiare nulla
sudo certbot renew --dry-run - C'è un timer di rinnovo pianificato?
systemctl list-timers | grep -i certbot - Cosa dice il log?
sudo tail -n 40 /var/log/letsencrypt/letsencrypt.log
Soluzione
- Esegui
sudo certbot renew --dry-rune leggi il primo errore. Usa il server di staging, quindi è sicuro e non consuma i limiti di produzione. - Se dice che la porta è in uso, cambia metodo:
sudo certbot certonly --nginx --cert-name cloud.example.com -d cloud.example.com(oppure--apacheo--webroot -w /var/www/html). Riscrive il file di rinnovo. - Attiva il timer:
sudo systemctl enable --now certbot.timer. Con il pacchetto snap si chiamasnap.certbot.renew.timer. - Ripara o rimuovi gli hook che falliscono in
/etc/letsencrypt/renewal-hooks/e usa un hookdeploycomesystemctl reload nginxper caricare il nuovo certificato. - Ripeti il dry-run finché termina con successo, poi controlla la nuova scadenza con
sudo certbot certificates.
Domande frequenti
--force-renewal è la soluzione?
Raramente. Non risolve la causa e ogni emissione forzata conta nei rate limit. Prima ripara il passaggio che fallisce, indicato dal dry-run.
Il rinnovo è riuscito ma il browser mostra ancora il vecchio certificato. Perché?
Il web server carica il certificato solo all'avvio o al reload. Aggiungi un hook deploy che lo ricarichi, oppure ricarica a mano una volta.