Pentru o explicație detaliată asupra modului în care funcționează provocarea Let’s Encrypt DNS-01 (sau validarea DNS), citiți articolul intitulat Ce este provocarea Let’s Encrypt DNS-01 și cum să o utilizați pentru a obține certificatele SSL.
În acest articol, vă vom arăta cum să utilizați validarea Let’s Encrypt DNS pentru a obține un certificat SSL pentru numele dvs. de domeniu folosind pluginul Certbot și Certbot CloudFlare DNS.
Subiect de conținut:
- Gestionarea domeniului dvs. cu CloudFlare DNS
- Instalarea Certbot și Certbot CloudFlare Plugin pe Ubuntu/Debian
- Instalarea Certbot și Certbot CloudFlare Plugin pe Fedora
- Instalarea Certbot și Certbot CloudFlare Plugin pe RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Verificarea dacă Certbot și Pluginul Certbot CloudFlare sunt instalate corect
- Generarea unui token API CloudFlare
- Stocarea în siguranță a jetonului API CloudFlare pe computer/server
- Generarea unui certificat SSL utilizând validarea DNS Certbot CloudFlare
- Listarea certificatelor SSL Let’s Encrypt folosind Certbot
- Reînnoirea certificatelor SSL Let’s Encrypt folosind Certbot
- Concluzie
- Referințe
Gestionarea domeniului dvs. cu CloudFlare DNS
Pentru a obține un certificat SSL Let’s Encrypt utilizând validarea CloudFlare DNS, trebuie să aveți un cont CloudFlare, iar domeniul dvs. trebuie să utilizeze CloudFlare DNS. Puteți creați un cont CloudFlare gratuit iar serviciul CloudFlare DNS este de asemenea gratuit.
Pentru a vă gestiona domeniul cu CloudFlare DNS, puteți face una dintre următoarele:
- Înregistrați-vă domeniul din CloudFlare
- Transferați-vă domeniul în CloudFlare
- Schimbați serverul de nume DNS al numelui dvs. de domeniu în serverul de nume DNS CloudFlare din tabloul de bord al registratorului dvs. de domeniu
Nu trebuie să cumpărați un domeniu de la CloudFlare sau să transferați un domeniu la CloudFlare pentru a-l gestiona cu serviciul DNS CloudFlare. Puteți doar să schimbați serverul de nume al domeniului dvs. în serverul de nume CloudFlare DNS din tabloul de bord al registratorului de domenii (de unde ați cumpărat domeniul) și să vă gestionați domeniul din CloudFlare. Pentru mai multe informații despre schimbarea serverului de nume al domeniului dvs. la serverul de nume CloudFlare DNS, citiți acest articol.
Instalarea Certbot și Certbot CloudFlare Plugin pe Ubuntu/Debian
Pluginul Certbot și Certbot CloudFlare sunt disponibile în depozitul oficial de pachete Ubuntu/Debian. Deci, le puteți instala pe Ubuntu/Debian foarte ușor.
Mai întâi, actualizați memoria cache a depozitului de pachete APT cu următoarea comandă:
$ sudo actualizare apt
Pentru a instala Certbot și Certbot CloudFlare DNS plugin, rulați următoarea comandă:
$ sudo apt instalare certbot python3-certbot-dns-cloudflare Pentru a confirma instalarea, apăsați „Y” și apoi apăsați
Pluginul Certbot și Certbot CloudFlare DNS sunt în curs de instalare. Durează ceva timp pentru a finaliza.
În acest moment, pluginul Certbot și Certbot CloudFlare DNS ar trebui să fie instalat.
Instalarea Certbot și Certbot CloudFlare Plugin pe Fedora
Pluginul Certbot și Certbot CloudFlare sunt disponibile în depozitul oficial de pachete al Fedora și pot fi instalate pe Fedora foarte ușor.
Mai întâi, actualizați baza de date a pachetelor DNF cu următoarea comandă:
$ sudo dnf makecache
Pentru a instala Certbot și Certbot CloudFlare DNS plugin pe Fedora, rulați următoarea comandă:
$ sudo dnf instalare certbot python3-certbot-dns-cloudflare Pentru a confirma instalarea, apăsați „Y” și apoi apăsați
Pluginul Certbot și Certbot CloudFlare DNS sunt în curs de instalare. Durează ceva timp pentru a finaliza.
În acest moment, pluginul Certbot și Certbot CloudFlare DNS ar trebui să fie instalat pe Fedora.
Instalarea Certbot și Certbot CloudFlare Plugin pe RHEL/AlmaLinux/Rocky Linux/CentOS Stream
Pluginul Certbot CloudFlare DNS nu este disponibil în depozitele oficiale de pachete ale RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Pluginul Certbot CloudFlare DNS este disponibil în depozitul de pachete EPEL. Puteți activa depozitul de pachete EPEL pe RHEL/AlmaLinux/Rocky Linux/CentOS Stream și puteți instala pluginul DNS Certbot CloudFlare de acolo.
După ce ați activat depozitul de pachete EPEL, actualizați memoria cache a bazei de date DNF cu următoarea comandă:
$ sudo dnf makecache
Apoi, instalați pluginul Certbot și Certbot CloudFlare DNS pe sistemul dvs. RHEL/AlmaLinux/Rocky Linux/CentOS Stream cu următoarea comandă:
$ sudo dnf instalare certbot python3-certbot-dns-cloudflare Pentru a confirma instalarea, apăsați „Y” și apoi apăsați
Pluginul Certbot și Certbot CloudFlare DNS sunt în curs de instalare. Durează ceva timp pentru a finaliza.
Pentru a accepta cheia GPG a depozitului EPEL, apăsați „Y” și apoi apăsați
În acest moment, pluginul Certbot și Certbot CloudFlare DNS ar trebui să fie instalat.
Verificarea dacă Certbot și Pluginul Certbot CloudFlare sunt instalate corect
Pentru a verifica dacă Certbot este instalat pe computer, rulați următoarea comandă:
$ certbot --versiuneDacă Certbot este instalat, comanda ar trebui să imprime numărul versiunii Certbot-ului instalat pe computer.
După cum puteți vedea, avem Certbot 2.1.0 instalat pe mașina noastră Debian.
Pentru a verifica dacă pluginul Certbot CloudFlare DNS este instalat pe computer, rulați următoarea comandă:
$ sudo pluginuri certbotDacă este instalat pluginul Certbot CloudFlare DNS, ar trebui să găsiți „dns-cloudflare” în lista de pluginuri, așa cum este marcat în următoarea captură de ecran:
Generarea unui token API CloudFlare
Pentru a verifica dreptul de proprietate asupra domeniului, Certbot trebuie să adauge o înregistrare TXT pe domeniul gestionat de serverul DNS CloudFlare. Pentru aceasta, Certbot are nevoie de acces la tokenul API CloudFlare. Puteți crea un token API pentru domeniul dvs. din tabloul de bord CloudFlare.
Mai întâi, conectați-vă la contul dvs. CloudFlare. Apoi, faceți clic pe pictograma profilului dvs
> Profilul meu din colțul din dreapta sus al paginii.
Navigați la secțiunea „Jetoane API”. [1] și faceți clic pe „Creare Token” [2] .
Faceți clic pe „Utilizați șablonul” din secțiunea „Editați DNS zonă”.
Din secțiunea „Permisiune”, permiteți permisiunea „Editare” pentru „Zona DNS” selectând opțiunile marcate din meniurile drop-down.
Dacă gestionați mai multe domenii cu CloudFlare, puteți permite modificarea unei „zone specifice” din secțiunea „Resurse zonă”. Permiterea unui simbol API să modifice doar o singură zonă este mai sigură decât a permite simbolului API să modifice toate zonele. Acest lucru se datorează faptului că, dacă jetonul API este compromis, suprafața de atac va fi mai mică și se vor produce mai puține daune.
Dacă doriți să utilizați o singură cheie API pentru a modifica toate domeniile gestionate de CloudFlare, selectați „Toate zonele” din secțiunea „Resurse zonă”.
După ce ați terminat de configurat indicativul API, faceți clic pe „Continuați la rezumat”.
Va fi afișat un rezumat al acțiunilor pe care le puteți efectua pe domeniile dvs. gestionate de CloudFlare cu simbolul API. Faceți clic pe „Creare Token”.
Ar trebui creat un token API. Copiați indicativul API într-un loc sigur pentru a nu-l pierde. După ce părăsiți această pagină, nu veți mai putea găsi acest token API din nou. Trebuie să generați un nou token API în cazul în care îl pierdeți:
LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5
Stocarea în siguranță a jetonului API CloudFlare pe computer/server
Certbot trebuie să folosească simbolul API CloudFlare pentru a adăuga o nouă înregistrare TXT pentru domeniul dvs. în serverul DNS CloudFlare. Deci, trebuie să stocați jetonul API CloudFlare pe computer/server. Stocarea simbolului API fără a asigura permisiunile de acces la fișiere corespunzătoare poate permite celorlalte programe/utilizatori cu acces la simbolul API. Nu este ceea ce doriți din motive de securitate. În această secțiune, vă vom arăta cum să stocați în siguranță jetonul API CloudFlare pe sistemul de fișiere.
Mai întâi, creați un director (adică ~/.secrets/certbot) în care doriți să stocați cheia API CloudFlare, după cum urmează:
$ mkdir -pv ~ / .secrete / certbot
Creați un fișier „cloudflare.ini” în directorul nou creat (adică ~/.secrets/certbot) și deschideți-l cu editorul de text preferat (adică nano) după cum urmează:
$ nano ~ / .secrete / certbot / cloudflare.ini Introduceți următoarea linie în fișierul „cloudflare.ini” și apăsați
Pentru a asigura o permisiune de acces adecvată pentru fișierul „cloudflare.ini”, rulați următoarele comenzi pentru a vă asigura că numai utilizatorul root are acces de citire și scriere la fișier:
$ sudo chown rădăcină:rădăcină ~ / .secrete / certbot / cloudflare.ini$ sudo chmod 0600 ~ / .secrete / certbot / cloudflare.ini
După cum puteți vedea, numai utilizatorul root are permisiunile de citire și scriere pentru fișierul „cloudflare.ini”.
$ ls -lh ~ / .secrete / certbot / cloudflare.ini
Alți utilizatori care încearcă să citească fișierul „cloudflare.ini” vor primi un mesaj de eroare „Permisiune refuzată”.
$ pisică ~ / .secrete / certbot / cloudflare.ini
Generarea unui certificat SSL utilizând validarea DNS Certbot CloudFlare
Pentru a genera un certificat SSL Let’s Encrypt pentru numele de domeniu wildcard „*.nodekite.com” folosind validarea CloudFlare DNS, executați comanda cerbot după cum urmează:
$ sudo certbot certnly --dns-cloudflare --dns-cloudflare-credentials ~ / .secrete / certbot / cloudflare.ini -d * .nodekite.comPentru a genera un certificat SSL Let’s Encrypt pentru numele de domenii „nodekite.com” și „www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:
$ sudo certbot certnly --dns-cloudflare --dns-cloudflare-credentials ~ / .secrete / certbot / cloudflare.ini -d www.nodekite.com -d nodekite.comDacă modificările DNS durează mult timp pentru a se propaga la serverele de nume DNS populare din întreaga lume, puteți utiliza opțiunea „–dns-cloudflare-propagation-seconds” a Certbot pentru a seta numărul de secunde pe care doriți să le aștepte Certbot înainte de validarea DNS. se efectuează.
$ sudo certbot certnly --dns-cloudflare --dns-cloudflare-credentials ~ / .secrete / certbot / cloudflare.ini --dns-cloudflare-propagation-seconds 60 -d * .nodekite.com Odată ce rulați comanda Certbot, vi se va cere să introduceți adresa dvs. de e-mail. Introduceți adresa dvs. de e-mail și apăsați
Apăsați „Y” și apoi apăsați
Apăsați „Y” și apoi apăsați
Se emite un certificat Let’s Encrypt SSL. Durează ceva timp pentru a finaliza.
În acest moment, este emis certificatul Let’s Encrypt SSL. Ar trebui să fie afișată calea completă în care sunt salvate fișierele certificatului SSL. Ar trebui să fie afișată și data de expirare a certificatului SSL.
Listarea certificatelor SSL Let’s Encrypt folosind Certbot
Puteți enumera toate certificatele Let’s Encrypt SSL pe care le-ați generat folosind Certbot cu următoarea comandă:
$ sudo certificate certbotDupă cum puteți vedea, este listat certificatul SSL Let’s Encrypt generat pentru domeniul „nodekite.com”. [1] . Se emite un certificat SSL wildcard pentru „nodekite.com” [2] numele domeniului. Data de expirare a certificatului este 2024-03-20 (valabil 89 de zile) [3] . Certificatul și calea cheii private sunt de asemenea enumerate aici [4] .
Certbot stochează toate certificatele SSL pe care le-ați generat pentru domeniile dvs. în directorul „/etc/letsencrypt/live” din folderul respectiv.
$ sudo ls -Rlh / etc / letsencrypt / Trăi /
Reînnoirea certificatelor SSL Let’s Encrypt folosind Certbot
Certbot reînnoiește automat toate certificatele SSL Let’s Encrypt pe care le-ați generat folosind validarea DNS CloudFlare.
Pentru a testa dacă funcția de reînnoire automată a certificatelor Let’s Encrypt SSL funcționează, rulați următoarea comandă:
$ sudo certbot reînnoiește --funcție uscatăAcțiunea de reînnoire automată este simulată pentru fiecare dintre certificatele Let’s Encrypt SSL pe care le-ați generat.
Dacă testele au succes, vei fi felicitat. Un test de succes înseamnă că certificatele SSL vor fi reînnoite automat înainte ca acestea să expire. Nu va trebui să faci nimic altceva.
Pentru ca funcția de reînnoire automată Certbot să funcționeze, cronometrul de sistem „cerbot.timer” trebuie să fie activat și activ pe computer/server.
Puteți verifica dacă cronometrul systemd „cerbot.timer” este activat și activ cu următoarea comandă:
$ sudo systemctl status certbot.timerDupă cum puteți vedea, cronometrul de sistem „certbot.timer” este activat (pornește automat la pornire) [1] si activ [2] . Certbot verifică dacă este nevoie să reînnoiți vreun certificat SSL după doar 11 minute (conform următoarei capturi de ecran) și reînnoiește certificatele SSL care sunt pe cale să expire [3] .
Pentru a verifica manual dacă vreun certificat SSL este pe cale să expire și pentru a reînnoi certificatele SSL care expiră, executați următoarea comandă:
$ sudo certbot reînnoieșteÎn cazul nostru, niciun certificat SSL nu este pe cale să expire. Deci, Certbot nu a încercat să reînnoiască niciun certificat SSL.
Pentru a forța Certbot să reînnoiască certificatul SSL al unui anumit domeniu (să spunem *.nodekite.com), rulați următoarea comandă:
$ sudo certbot certnly --forța-reînnoire -d * .nodekite.com Apăsați „1” și apăsați
Certificatul SSL trebuie reînnoit.
Concluzie
Pentru a obține un certificat SSL Let’s Encrypt folosind validarea DNS CloudFlare folosind Certbot, aveți nevoie de acces la tokenul API CloudFlare. În acest articol, v-am arătat cum să creați un token API CloudFlare pentru domeniul dvs. și să îl stocați în siguranță pe computer/server, astfel încât să îl puteți accesa cu Certbot atunci când este necesar. De asemenea, v-am arătat cum să instalați Certbot și pluginul Certbot CloudFlare DNS pe cele mai populare distribuții Linux. V-am arătat cum să generați certificatele SSL cu caractere wildcard Let’s Encrypt, precum și certificate SSL pentru un singur domeniu folosind validarea Certbot și CloudFlare DNS. În cele din urmă, v-am arătat cum să reînnoiți certificatele SSL Let’s Encrypt folosind Certbot automat și manual.