Per una spiegazione dettagliata su come funziona la sfida Let's Encrypt DNS-01 (o convalida DNS), leggi l'articolo intitolato Che cos'è la sfida Let's Encrypt DNS-01 e come utilizzarla per ottenere i certificati SSL.
In questo articolo, ti mostreremo come utilizzare la convalida DNS Let's Encrypt per ottenere un certificato SSL per il tuo nome di dominio utilizzando il plug-in DNS Certbot e Certbot CloudFlare.
Argomento dei contenuti:
- Gestire il tuo dominio con CloudFlare DNS
- Installazione del plugin Certbot e Certbot CloudFlare su Ubuntu/Debian
- Installazione del plugin Certbot e Certbot CloudFlare su Fedora
- Installazione del plugin Certbot e Certbot CloudFlare su RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Verifica se Certbot e il plugin Certbot CloudFlare sono installati correttamente
- Generazione di un token API CloudFlare
- Archiviazione sicura del token API CloudFlare sul computer/server
- Generazione di un certificato SSL utilizzando la convalida DNS Certbot CloudFlare
- Elenco dei certificati SSL Let's Encrypt utilizzando Certbot
- Rinnovare i certificati SSL Let's Encrypt utilizzando Certbot
- Conclusione
- Riferimenti
Gestire il tuo dominio con CloudFlare DNS
Per ottenere un certificato SSL Let's Encrypt utilizzando la convalida DNS CloudFlare, devi disporre di un account CloudFlare e il tuo dominio deve utilizzare il DNS CloudFlare. Puoi crea un account CloudFlare gratuitamente e anche il servizio DNS CloudFlare è gratuito.
Per gestire il tuo dominio con CloudFlare DNS, puoi effettuare una delle seguenti operazioni:
- Registra il tuo dominio da CloudFlare
- Trasferisci il tuo dominio su CloudFlare
- Cambia il server dei nomi DNS del tuo nome di dominio nel server dei nomi DNS CloudFlare dalla dashboard del tuo registrar di domini
Non è necessario acquistare un dominio da CloudFlare o trasferire un dominio su CloudFlare per gestirlo con il servizio DNS CloudFlare. Puoi semplicemente cambiare il nameserver del tuo dominio nel nameserver DNS CloudFlare dalla dashboard del tuo registrar di dominio (da cui hai acquistato il dominio) e gestire il tuo dominio da CloudFlare. Per ulteriori informazioni su come modificare il nameserver del tuo dominio nel nameserver DNS CloudFlare, leggi questo articolo.
Installazione del plugin Certbot e Certbot CloudFlare su Ubuntu/Debian
I plugin Certbot e Certbot CloudFlare sono disponibili nel repository ufficiale dei pacchetti di Ubuntu/Debian. Quindi puoi installarli su Ubuntu/Debian molto facilmente.
Innanzitutto, aggiorna la cache del repository del pacchetto APT con il seguente comando:
$ sudo aggiornamento adeguato
Per installare il plugin DNS Certbot e Certbot CloudFlare, esegui il seguente comando:
$ sudo adatto installare certbot python3-certbot-dns-cloudflare Per confermare l'installazione, premere “Y” e poi premere
È in corso l'installazione dei plug-in DNS Certbot e Certbot CloudFlare. Ci vuole un po' di tempo per completarlo.
A questo punto dovrebbero essere installati il plugin DNS Certbot e Certbot CloudFlare.
Installazione del plugin Certbot e Certbot CloudFlare su Fedora
I plugin Certbot e Certbot CloudFlare sono disponibili nel repository ufficiale dei pacchetti di Fedora e possono essere installati su Fedora molto facilmente.
Innanzitutto, aggiorna il database dei pacchetti DNF con il seguente comando:
$ sudo dnf makecache
Per installare il plugin DNS Certbot e Certbot CloudFlare su Fedora, esegui il seguente comando:
$ sudo dnf installare certbot python3-certbot-dns-cloudflare Per confermare l'installazione, premere “Y” e poi premere
È in corso l'installazione dei plug-in DNS Certbot e Certbot CloudFlare. Ci vuole un po' di tempo per completarlo.
A questo punto, i plugin DNS Certbot e Certbot CloudFlare dovrebbero essere installati su Fedora.
Installazione del plugin Certbot e Certbot CloudFlare su RHEL/AlmaLinux/Rocky Linux/CentOS Stream
Il plug-in DNS Certbot CloudFlare non è disponibile nei repository ufficiali dei pacchetti di RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Il plug-in DNS Certbot CloudFlare è disponibile nel repository del pacchetto EPEL. È possibile abilitare il repository di pacchetti EPEL su RHEL/AlmaLinux/Rocky Linux/CentOS Stream e installare il plug-in DNS Certbot CloudFlare da lì.
Una volta abilitato il repository dei pacchetti EPEL, aggiorna la cache del database DNF con il seguente comando:
$ sudo dnf makecache
Quindi, installa il plugin DNS Certbot e Certbot CloudFlare sul tuo sistema RHEL/AlmaLinux/Rocky Linux/CentOS Stream con il seguente comando:
$ sudo dnf installare certbot python3-certbot-dns-cloudflare Per confermare l'installazione, premere “Y” e poi premere
È in corso l'installazione dei plug-in DNS Certbot e Certbot CloudFlare. Ci vuole un po' di tempo per completarlo.
Per accettare la chiave GPG del repository EPEL, premere 'Y' e quindi premere
A questo punto dovrebbero essere installati il plugin DNS Certbot e Certbot CloudFlare.
Verifica se Certbot e il plugin Certbot CloudFlare sono installati correttamente
Per verificare se Certbot è installato sul tuo computer, esegui il comando seguente:
$ cerbot --versioneSe Certbot è installato, il comando dovrebbe stampare il numero di versione del Certbot installato sul tuo computer.
Come puoi vedere, abbiamo Certbot 2.1.0 installato sulla nostra macchina Debian.
Per verificare se il plug-in DNS Certbot CloudFlare è installato sul tuo computer, esegui il comando seguente:
$ sudo plugin di CertbotSe è installato il plug-in DNS Certbot CloudFlare, dovresti trovare 'dns-cloudflare' nell'elenco dei plug-in, come indicato nello screenshot seguente:
Generazione di un token API CloudFlare
Per verificare la proprietà del dominio, Certbot deve aggiungere un record TXT sul dominio gestito dal server DNS CloudFlare. Per questo, Certbot ha bisogno dell'accesso al token API CloudFlare. Puoi creare un token API per il tuo dominio dalla dashboard di CloudFlare.
Innanzitutto, accedi al tuo account CloudFlare. Quindi, fai clic sull'icona del tuo profilo
> Il mio profilo dall'angolo in alto a destra della pagina.
Passare alla sezione 'Token API'. [1] e clicca su “Crea token” [2] .
Fare clic su 'Utilizza modello' dalla sezione 'Modifica DNS di zona'.
Dalla sezione “Autorizzazione”, consenti l'autorizzazione “Modifica” a “Zona DNS” selezionando le opzioni contrassegnate dai menu a discesa.
Se gestisci più domini con CloudFlare, puoi consentire la modifica di una 'Zona specifica' dalla sezione 'Risorsa zona'. Consentire a un token API di modificare solo una singola zona è più sicuro che consentire al token API di modificare tutte le zone. Questo perché se il token API viene compromesso, la superficie di attacco sarà più piccola e verranno arrecati meno danni.
Se desideri utilizzare una singola chiave API per modificare tutti i tuoi domini gestiti da CloudFlare, seleziona 'Tutte le zone' dalla sezione 'Risorsa zona'.
Una volta terminata la configurazione del token API, fai clic su 'Continua al riepilogo'.
Verrà visualizzato un riepilogo delle azioni che puoi eseguire sui tuoi domini gestiti da CloudFlare con il token API. Fare clic su 'Crea token'.
Dovrebbe essere creato un token API. Copia il token API in un posto sicuro in modo da non perderlo. Una volta lasciata questa pagina, non potrai più trovare questo token API. Devi generare un nuovo token API nel caso lo perdi:
LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5
Archiviazione sicura del token API CloudFlare sul computer/server
Certbot deve utilizzare il token API CloudFlare per aggiungere un nuovo record TXT per il tuo dominio nel server DNS CloudFlare. Pertanto, devi archiviare il token API CloudFlare sul tuo computer/server. Memorizzare il token API senza garantire le autorizzazioni di accesso ai file adeguate può consentire ad altri programmi/utenti di accedere al token API. Questo non è quello che vuoi per motivi di sicurezza. In questa sezione, ti mostreremo come archiviare in modo sicuro il token API CloudFlare sul filesystem.
Innanzitutto, crea una directory (ad esempio ~/.secrets/certbot) in cui desideri archiviare la chiave API CloudFlare come segue:
$ mkdir -pv ~ / .segreti / cerbot
Crea un file “cloudflare.ini” nella directory appena creata (ad esempio ~/.secrets/certbot) e aprilo con il tuo editor di testo preferito (ad esempio nano) come segue:
$ nano ~ / .segreti / cerbot / cloudflare.ini Digitare la riga seguente nel file “cloudflare.ini” e premere
Per garantire un'autorizzazione di accesso adeguata per il file 'cloudflare.ini', eseguire i seguenti comandi per assicurarsi che solo l'utente root abbia accesso in lettura e scrittura al file:
$ sudo chown radice:radice ~ / .segreti / cerbot / cloudflare.ini$ sudo chmod 06:00 ~ / .segreti / cerbot / cloudflare.ini
Come puoi vedere, solo l'utente root ha i permessi di lettura e scrittura sul file “cloudflare.ini”.
$ l -sx ~ / .segreti / cerbot / cloudflare.ini
Altri utenti che tentano di leggere il file 'cloudflare.ini' riceveranno un messaggio di errore 'Autorizzazione negata'.
$ gatto ~ / .segreti / cerbot / cloudflare.ini
Generazione di un certificato SSL utilizzando la convalida DNS Certbot CloudFlare
Per generare un certificato SSL Let's Encrypt per il nome di dominio con caratteri jolly '*.nodekite.com' utilizzando la convalida DNS CloudFlare, eseguire il comando cerbot come segue:
$ sudo certibot certamente --dns-cloudflare --dns-cloudflare-credentials ~ / .segreti / cerbot / cloudflare.ini -D * .nodekite.comPer generare un certificato SSL Let's Encrypt per i nomi di dominio “nodekite.com” e “www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:
$ sudo certibot certamente --dns-cloudflare --dns-cloudflare-credentials ~ / .segreti / cerbot / cloudflare.ini -D www.nodekite.com -D nodekite.comSe le modifiche DNS impiegano molto tempo per propagarsi ai server dei nomi DNS più diffusi in tutto il mondo, puoi utilizzare l'opzione “–dns-cloudflare-propagation-seconds” di Certbot per impostare il numero di secondi che vuoi che Certbot attenda prima della convalida DNS viene eseguita.
$ sudo certibot certamente --dns-cloudflare --dns-cloudflare-credentials ~ / .segreti / cerbot / cloudflare.ini --dns-cloudflare-propagazione-secondi 60 -D * .nodekite.com Una volta eseguito il comando Certbot, ti verrà chiesto di digitare il tuo indirizzo email. Inserisci il tuo indirizzo email e premi
Premere 'Y' e quindi premere
Premere 'Y' e quindi premere
È stato emesso un certificato SSL Let's Encrypt. Ci vuole un po' di tempo per completarlo.
A questo punto viene emesso il certificato SSL Let’s Encrypt. Dovrebbe essere visualizzato il percorso completo in cui vengono salvati i file del certificato SSL. Dovrebbe essere visualizzata anche la data di scadenza del certificato SSL.
Elenco dei certificati SSL Let's Encrypt utilizzando Certbot
Puoi elencare tutti i certificati Let's Encrypt SSL che hai generato utilizzando Certbot con il seguente comando:
$ sudo certificati certibotCome puoi vedere, è elencato il certificato SSL Let's Encrypt generato per il dominio 'nodekite.com'. [1] . Viene emesso un certificato SSL con carattere jolly per 'nodekite.com' [2] nome del dominio. La data di scadenza del certificato è 2024-03-20 (valido per 89 giorni) [3] . Qui sono elencati anche il certificato e il percorso della chiave privata [4] .
Certbot memorizza tutti i certificati SSL che hai generato per i tuoi domini nella directory “/etc/letsencrypt/live” nella rispettiva cartella.
$ sudo l -Rlh / eccetera / letsencrypt / vivere /
Rinnovare i certificati SSL Let's Encrypt utilizzando Certbot
Certbot rinnova automaticamente tutti i certificati Let's Encrypt SSL che hai generato utilizzando la convalida DNS CloudFlare.
Per verificare se la funzionalità di rinnovo automatico dei certificati Let's Encrypt SSL funziona, esegui il comando seguente:
$ sudo rinnovare il cerbot --funzionamento a seccoL'azione di rinnovo automatico viene simulata per ciascuno dei certificati SSL Let's Encrypt che hai generato.
Se i test hanno esito positivo, riceverai le congratulazioni. Un test riuscito significa che i certificati SSL verranno rinnovati automaticamente prima della scadenza. Non dovrai fare nient'altro.
Affinché la funzione di rinnovo automatico di Certbot funzioni, il timer di sistema 'cerbot.timer' deve essere abilitato e attivo sul tuo computer/server.
Puoi verificare se il timer systemd “cerbot.timer” è abilitato e attivo con il seguente comando:
$ sudo stato systemctl certbot.timerCome puoi vedere, il timer systemd “certbot.timer” è abilitato (si avvia automaticamente all'avvio) [1] e attivo [2] . Certbot verifica se è necessario rinnovare un certificato SSL dopo soli 11 minuti (secondo lo screenshot seguente) e rinnova i certificati SSL che stanno per scadere [3] .
Per verificare manualmente se qualche certificato SSL sta per scadere e rinnovare i certificati SSL in scadenza, esegui il comando seguente:
$ sudo rinnovare il cerbotNel nostro caso, nessun certificato SSL sta per scadere. Pertanto, Certbot non ha tentato di rinnovare alcun certificato SSL.
Per forzare Certbot a rinnovare il certificato SSL di un dominio specifico (diciamo *.nodekite.com), esegui il seguente comando:
$ sudo certibot certamente --rinnovamento forzato -D * .nodekite.com Premere '1' e premere
Il certificato SSL dovrebbe essere rinnovato.
Conclusione
Per ottenere un certificato SSL Let's Encrypt utilizzando la convalida DNS CloudFlare utilizzando Certbot, è necessario accedere al token API CloudFlare. In questo articolo, ti abbiamo mostrato come creare un token API CloudFlare per il tuo dominio e archiviarlo in modo sicuro sul tuo computer/server in modo che tu possa accedervi con Certbot quando necessario. Ti abbiamo anche mostrato come installare Certbot e il plugin DNS Certbot CloudFlare sulle distribuzioni Linux più popolari. Ti abbiamo mostrato come generare certificati SSL Let's Encrypt con caratteri jolly e certificati SSL per singoli domini utilizzando la convalida DNS Certbot e CloudFlare. Infine, ti abbiamo mostrato come rinnovare i certificati Let's Encrypt SSL utilizzando Certbot in modo automatico e manuale.