In arrivo. Il servizio ACME di SSLCenter non è ancora disponibile: questa guida anticipa come funzionerà. L'indirizzo del server ACME e le credenziali arriveranno con l'attivazione.
Certbot è il client ACME più usato su Linux. Ottiene il certificato, configura nginx o Apache e lo rinnova da solo.
Cosa serve
- Un server Linux con nginx o Apache, e accesso come
root(osudo). - Le credenziali del servizio: l'indirizzo del server ACME e la coppia di chiavi EAB (un identificativo e una chiave).
- Le verifiche completate: quella dell'organizzazione, per i certificati OV ed EV, e quella dei domini, nei modi che ti indichiamo all'attivazione (perché). Prima, Certbot riceve solo errori: non è un problema, ma conviene configurarlo a verifiche concluse.
Negli esempi <server ACME>, <identificativo> e <chiave> stanno per i valori delle
tue credenziali.
1. Installa Certbot
Su Debian e Ubuntu, con il plugin per il tuo server web:
sudo apt install certbot python3-certbot-nginx # per nginx
sudo apt install certbot python3-certbot-apache # per Apache
Su Red Hat, AlmaLinux e Rocky Linux, dal repository EPEL:
sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx # o python3-certbot-apache
2. Imposta il server ACME
Certbot usa Let's Encrypt, se non gli si dice altro. Per non doverlo ripetere a ogni
comando, indica il nostro server in /etc/letsencrypt/cli.ini:
server = <server ACME>
3. Registra l'account
Una volta sola, con le credenziali EAB e un indirizzo email per gli avvisi:
sudo certbot register --agree-tos -m tu@tuodominio.it \
--eab-kid <identificativo> --eab-hmac-key <chiave>
Dopo la registrazione la chiave EAB non serve più a Certbot: conservala comunque in un posto sicuro, o chiedici di sostituirla se pensi sia stata esposta.
4. Ottieni e installa il certificato
Con nginx:
sudo certbot --nginx -d tuodominio.it -d www.tuodominio.it
Con Apache, --apache al posto di --nginx. Certbot chiede il certificato, trova il
sito con quei nomi nella configurazione, aggiunge le direttive TLS e ricarica il server.
Indica con -d solo domini compresi nel servizio: per gli altri la richiesta viene
rifiutata.
Il certificato con la catena degli intermedi e la chiave privata restano in
/etc/letsencrypt/live/tuodominio.it/ (fullchain.pem e privkey.pem).
Se preferisci configurare il server da te
Con certonly Certbot ottiene il certificato senza toccare la configurazione:
sudo certbot certonly --webroot -w /var/www/html \
-d tuodominio.it -d www.tuodominio.it \
--deploy-hook "systemctl reload nginx"
Nella configurazione del sito indica i file di /etc/letsencrypt/live/tuodominio.it/
(esempi per nginx e Apache). Il --deploy-hook ricarica il server
a ogni rinnovo: senza, il nuovo certificato resta su disco e il sito continua a servire
il vecchio.
5. Il rinnovo
Il pacchetto installa un timer di sistema che controlla i certificati due volte al giorno e li rinnova con anticipo, ricaricando il server. Per verificare che sia attivo e vedere le scadenze:
systemctl list-timers | grep certbot
sudo certbot certificates
La verifica dei domini
Quando Certbot chiede un certificato, la Certification Authority controlla se ogni dominio ha già una verifica valida (come funziona). Se non ce l'ha, propone una prova automatica:
- HTTP-01: Certbot la completa da solo, tramite nginx, Apache o la cartella
indicata con
--webroot, se il sito è raggiungibile da Internet sulla porta 80. Per un sito pubblico, con la configurazione di questa guida, non serve altro. - DNS-01: serve un plugin per il provider DNS, vedi sotto.
Se nessuna prova riesce, la richiesta fallisce e Certbot riprova nei giorni seguenti: il certificato in uso resta valido fino alla sua scadenza. Come si verificheranno i domini con il nostro servizio, e se una verifica fatta prima potrà evitare le prove, lo confermeremo all'avvio.
Per i wildcard e i server interni: DNS-01
HTTP-01 non vale per i wildcard né per server non raggiungibili da Internet. Per questi casi Certbot ha plugin per i provider DNS più diffusi, che creano da soli il record di verifica. Con Cloudflare, ad esempio:
sudo apt install python3-certbot-dns-cloudflare
sudo certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
-d tuodominio.it -d '*.tuodominio.it' \
--deploy-hook "systemctl reload nginx"
Il file delle credenziali contiene la chiave API del provider: rendilo leggibile solo da
root (chmod 600). Se il tuo provider DNS non ha un plugin, valuta la
delega con CNAME.
Se qualcosa non va
| Messaggio | Cosa significa |
|---|---|
externalAccountRequired | Manca la registrazione con le credenziali EAB (passo 3), o il server ACME non è quello giusto (passo 2) |
unauthorized per un dominio | Il dominio non ha una verifica valida e la prova HTTP-01 non è riuscita: controlla porta 80 e DNS |
| Richiesta rifiutata per l'organizzazione | La verifica dell'organizzazione (OV, EV) non è completa o è scaduta |
rejectedIdentifier | Il dominio non è compreso nel servizio |
| Il sito mostra il certificato vecchio | Il server non è stato ricaricato: con certonly, aggiungi un --deploy-hook |
Il log completo è in /var/log/letsencrypt/letsencrypt.log. Per tenere d'occhio i
rinnovi: monitorare i rinnovi automatici.
