Cum să obțineți Let’s Encrypt certificate SSL utilizând Certbot CloudFlare DNS Validation

Cum Sa Obtineti Let S Encrypt Certificate Ssl Utilizand Certbot Cloudflare Dns Validation



Certbot este un client ACME pentru autoritatea de certificare (CA) Let’s Encrypt. Este folosit pentru a genera un certificat SSL Let’s Encrypt și pentru a-l reînnoi automat. În mod implicit, Certbot utilizează provocarea Let’s Encrypt HTTP-01 pentru a verifica dreptul de proprietate asupra domeniului și pentru a emite un certificat SSL pentru domeniu. Dar provocarea HTTP-01 nu va funcționa decât dacă aveți o adresă IP publică și computerul este accesibil de pe internet. Deci, dacă doriți să utilizați certificatele Let's Encrypt SSL pentru rețeaua dvs. de domiciliu sau rețeaua privată, trebuie să utilizați provocarea DNS-01. Când se utilizează provocarea DNS-01, Let’s Encrypt verifică dreptul de proprietate asupra domeniului utilizând serverul DNS al domeniului. Deci, funcționează și pentru rețelele private.

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:

  1. Gestionarea domeniului dvs. cu CloudFlare DNS
  2. Instalarea Certbot și Certbot CloudFlare Plugin pe Ubuntu/Debian
  3. Instalarea Certbot și Certbot CloudFlare Plugin pe Fedora
  4. Instalarea Certbot și Certbot CloudFlare Plugin pe RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Verificarea dacă Certbot și Pluginul Certbot CloudFlare sunt instalate corect
  6. Generarea unui token API CloudFlare
  7. Stocarea în siguranță a jetonului API CloudFlare pe computer/server
  8. Generarea unui certificat SSL utilizând validarea DNS Certbot CloudFlare
  9. Listarea certificatelor SSL Let’s Encrypt folosind Certbot
  10. Reînnoirea certificatelor SSL Let’s Encrypt folosind Certbot
  11. Concluzie
  12. 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

  O captură de ecran a unui computer Descriere generată automat

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

  O captură de ecran a unui computer Descriere generată automat

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 .

  O captură de ecran a unui computer Descriere generată automat

Pluginul Certbot și Certbot CloudFlare DNS sunt în curs de instalare. Durează ceva timp pentru a finaliza.

  O captură de ecran a unui program de calculator Descriere generată automat

În acest moment, pluginul Certbot și Certbot CloudFlare DNS ar trebui să fie instalat pe Fedora.

  O captură de ecran a unui computer Descriere generată automat

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

  O captură de ecran a unui computer Descriere generată automat

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 .

  O captură de ecran a unui computer Descriere generată automat

Pluginul Certbot și Certbot CloudFlare DNS sunt în curs de instalare. Durează ceva timp pentru a finaliza.

  O captură de ecran a unui computer Descriere generată automat

Pentru a accepta cheia GPG a depozitului EPEL, apăsați „Y” și apoi apăsați .

  O captură de ecran a unui computer Descriere generată automat

În acest moment, pluginul Certbot și Certbot CloudFlare DNS ar trebui să fie instalat.

  O captură de ecran a unui computer Descriere generată automat

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 --versiune

Dacă 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.

  O captură de ecran a unui computer Descriere generată automat

Pentru a verifica dacă pluginul Certbot CloudFlare DNS este instalat pe computer, rulați următoarea comandă:

$ sudo pluginuri certbot

Dacă 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:

  O captură de ecran a unui computer Descriere generată automat

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] .

  O captură de ecran a unui computer Descriere generată automat

Faceți clic pe „Utilizați șablonul” din secțiunea „Editați DNS zonă”.

  O captură de ecran a unui computer Descriere generată automat

Din secțiunea „Permisiune”, permiteți permisiunea „Editare” pentru „Zona DNS” selectând opțiunile marcate din meniurile drop-down.

  O captură de ecran a unui computer Descriere generată automat

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.

  O captură de ecran a unui computer Descriere generată automat

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ă”.

  O captură de ecran a unui computer Descriere generată automat

După ce ați terminat de configurat indicativul API, faceți clic pe „Continuați la rezumat”.

  O captură de ecran a unui computer Descriere generată automat

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”.

  O captură de ecran a unui computer Descriere generată automat

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

  O captură de ecran a unui computer Descriere generată automat

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

  O captură de ecran a unui computer Descriere generată automat

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 + X urmat de „Y” și pentru a-l salva (dacă utilizați editorul de text nano).

dns_cloudflare_api_token = < your-cloudflare-api-token >

  O captură de ecran a unui computer Descriere generată automat

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

  O captură de ecran a unui computer Descriere generată automat

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.com

Pentru 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.com

Dacă 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 a continua.

Apăsați „Y” și apoi apăsați pentru a accepta „Termenii și condițiile” ale Let’s Encrypt.

  O captură de ecran a unui computer Descriere generată automat

Apăsați „Y” și apoi apăsați .

  O captură de ecran a unui program de calculator Descriere generată automat

Se emite un certificat Let’s Encrypt SSL. Durează ceva timp pentru a finaliza.

  O captură de ecran a unei erori de computer Descriere generată automat

Î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.

  O captură de ecran a unui computer Descriere generată automat

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 certbot

După 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] .

  O captură de ecran a unui computer Descriere generată automat

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 /

  O captură de ecran a unui computer Descriere generată automat

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.

  O captură de ecran a unui computer Descriere generată automat

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.

  O captură de ecran a unui computer Descriere generată automat

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.timer

După 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] .

  O captură de ecran a unui computer Descriere generată automat

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 pentru a selecta prima opțiune (pentru validarea DNS folosind CloudFlare DNS).

  O captură de ecran a unui computer Descriere generată automat

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.

Referinte: