Hur man får Let's Encrypt SSL-certifikat med Certbot CloudFlare DNS-validering

Hur Man Far Let S Encrypt Ssl Certifikat Med Certbot Cloudflare Dns Validering



Certbot är en ACME-klient för Let’s Encrypt Certificate Authority (CA). Det används för att generera ett Let's Encrypt SSL-certifikat och förnya det automatiskt. Som standard använder Certbot utmaningen Let's Encrypt HTTP-01 för att verifiera ägandet av domänen och utfärda ett SSL-certifikat för domänen. Men HTTP-01-utmaningen fungerar inte om du inte har en offentlig IP-adress och din dator är tillgänglig från internet. Så om du vill använda Let's Encrypt SSL-certifikat för ditt hemnätverk eller privata nätverk måste du istället använda DNS-01-utmaningen. När DNS-01-utmaningen används, verifierar Let's Encrypt ägandet av domänen med hjälp av domänens DNS-server. Så det fungerar för privata nätverk också.

För en detaljerad förklaring om hur Let's Encrypt DNS-01-utmaningen (eller DNS-validering) fungerar, läs artikeln med titeln What Is Let's Encrypt DNS-01 Challenge och hur man använder den för att få SSL-certifikaten.

I den här artikeln kommer vi att visa dig hur du använder Let's Encrypt DNS-validering för att få ett SSL-certifikat för ditt domännamn med Certbot och Certbot CloudFlare DNS-plugin.







Ämne för innehåll:

  1. Hantera din domän med CloudFlare DNS
  2. Installera Certbot och Certbot CloudFlare Plugin på Ubuntu/Debian
  3. Installerar Certbot och Certbot CloudFlare Plugin på Fedora
  4. Installera Certbot och Certbot CloudFlare Plugin på RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Kontrollera om Certbot och Certbot CloudFlare Plugin är korrekt installerade
  6. Genererar ett CloudFlare API-token
  7. Säker lagring av CloudFlare API-token på datorn/servern
  8. Generera ett SSL-certifikat med Certbot CloudFlare DNS-validering
  9. Lista Let's Encrypt SSL-certifikat med Certbot
  10. Förnya Let's Encrypt SSL-certifikat med Certbot
  11. Slutsats
  12. Referenser

Hantera din domän med CloudFlare DNS

För att få ett Let's Encrypt SSL-certifikat med CloudFlare DNS-validering måste du ha ett CloudFlare-konto och din domän måste använda CloudFlare DNS. Du kan skapa ett CloudFlare-konto gratis och CloudFlare DNS-tjänsten är gratis att använda också.



För att hantera din domän med CloudFlare DNS kan du göra något av följande:



  • Registrera din domän från CloudFlare
  • Överför din domän till CloudFlare
  • Ändra DNS-namnservern för ditt domännamn till CloudFlare DNS-namnserver från instrumentpanelen för din domänregistrator

Du behöver inte köpa en domän från CloudFlare eller överföra en domän till CloudFlare för att hantera den med CloudFlare DNS-tjänst. Du kan bara ändra namnservern för din domän till CloudFlare DNS-namnserver från instrumentpanelen för din domänregistrator (där du köpte domänen från) och hantera din domän från CloudFlare. För mer information om hur du ändrar namnservern för din domän till CloudFlare DNS-namnservern, läs den här artikeln.





Installera Certbot och Certbot CloudFlare Plugin på Ubuntu/Debian

Certbot och Certbot CloudFlare plugin är tillgängliga i det officiella paketförrådet för Ubuntu/Debian. Så du kan installera dem på Ubuntu/Debian väldigt enkelt.

Uppdatera först APT-paketförrådets cache med följande kommando:



$ sudo passande uppdatering

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att installera Certbot och Certbot CloudFlare DNS-plugin, kör följande kommando:

$ sudo benägen Installera certbot python3-certbot-dns-cloudflare

För att bekräfta installationen, tryck på 'Y' och tryck sedan på .

Certbot och Certbot CloudFlare DNS-plugin håller på att installeras. Det tar ett tag att slutföra.

Vid denna tidpunkt bör Certbot och Certbot CloudFlare DNS-plugin installeras.

Installerar Certbot och Certbot CloudFlare Plugin på Fedora

Certbot och Certbot CloudFlare plugin är tillgängliga i Fedoras officiella paketförråd och kan installeras på Fedora mycket enkelt.

Uppdatera först DNF-paketdatabasen med följande kommando:

$ sudo dnf makecache

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att installera Certbot och Certbot CloudFlare DNS-plugin på Fedora, kör följande kommando:

$ sudo dnf Installera certbot python3-certbot-dns-cloudflare

För att bekräfta installationen, tryck på 'Y' och tryck sedan på .

  En skärmdump av en datorbeskrivning som genereras automatiskt

Certbot och Certbot CloudFlare DNS-plugin håller på att installeras. Det tar ett tag att slutföra.

  En skärmdump av ett datorprogram Beskrivning genereras automatiskt

Vid denna tidpunkt bör Certbot och Certbot CloudFlare DNS-plugin installeras på Fedora.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Installera Certbot och Certbot CloudFlare Plugin på RHEL/AlmaLinux/Rocky Linux/CentOS Stream

Certbot CloudFlare DNS-plugin är inte tillgänglig i de officiella paketförråden för RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Certbot CloudFlare DNS-plugin är tillgänglig i EPEL-paketförrådet. Du kan aktivera EPEL-paketförrådet på RHEL/AlmaLinux/Rocky Linux/CentOS Stream och installera Certbot CloudFlare DNS-plugin därifrån.

När du har aktiverat EPEL-paketförrådet uppdaterar du DNF-databasens cache med följande kommando:

$ sudo dnf makecache

  En skärmdump av en datorbeskrivning som genereras automatiskt

Installera sedan Certbot och Certbot CloudFlare DNS-plugin på ditt RHEL/AlmaLinux/Rocky Linux/CentOS Stream-system med följande kommando:

$ sudo dnf Installera certbot python3-certbot-dns-cloudflare

För att bekräfta installationen, tryck på 'Y' och tryck sedan på .

  En skärmdump av en datorbeskrivning som genereras automatiskt

Certbot och Certbot CloudFlare DNS-plugin installeras. Det tar ett tag att slutföra.

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att acceptera GPG-nyckeln för EPEL-förvaret, tryck på 'Y' och tryck sedan .

  En skärmdump av en datorbeskrivning som genereras automatiskt

Vid denna tidpunkt bör Certbot och Certbot CloudFlare DNS-plugin installeras.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Kontrollera om Certbot och Certbot CloudFlare Plugin är korrekt installerade

För att kontrollera om Certbot är installerat på din dator, kör följande kommando:

$ certbot --version

Om Certbot är installerat bör kommandot skriva ut versionsnumret för den installerade Certbot på din dator.

Som du kan se har vi Certbot 2.1.0 installerat på vår Debian-maskin.

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att kontrollera om Certbot CloudFlare DNS-plugin är installerad på din dator, kör följande kommando:

$ sudo certbot plugins

Om Certbot CloudFlare DNS-plugin är installerad bör du hitta 'dns-cloudflare' i plugin-listan som markerats i följande skärmdump:

  En skärmdump av en datorbeskrivning som genereras automatiskt

Genererar ett CloudFlare API-token

För att verifiera ägandet av domänen måste Certbot lägga till en TXT-post på domänen som hanteras av CloudFlare DNS-server. För det behöver Certbot tillgång till CloudFlare API-token. Du kan skapa en API-token för din domän från CloudFlare-instrumentpanelen.

Logga först in på ditt CloudFlare-konto. Klicka sedan på din profilikon

> Min profil från det övre högra hörnet på sidan.

Navigera till avsnittet 'API-tokens'. [1] och klicka på 'Skapa token' [2] .

  En skärmdump av en datorbeskrivning som genereras automatiskt

Klicka på 'Använd mall' i avsnittet 'Redigera zon-DNS'.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Från avsnittet 'Tillstånd', tillåt 'Redigera'-behörighet till 'DNS-zon' genom att välja de markerade alternativen från rullgardinsmenyerna.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Om du hanterar flera domäner med CloudFlare kan du tillåta modifiering av en 'specifik zon' från avsnittet 'Zonresurs'. Att tillåta en API-token att ändra endast en enskild zon är säkrare än att tillåta API-token att modifiera alla zoner. Detta beror på att om API-tokenet äventyras kommer attackytan att bli mindre och mindre skada kommer att ske.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Om du vill använda en enda API-nyckel för att ändra alla dina CloudFlare-hanterade domäner, välj 'Alla zoner' från avsnittet 'Zonresurs'.

  En skärmdump av en datorbeskrivning som genereras automatiskt

När du är klar med att konfigurera din API-token klickar du på 'Fortsätt till sammanfattning'.

  En skärmdump av en datorbeskrivning som genereras automatiskt

En sammanfattning av de åtgärder som du kan utföra på dina CloudFlare-hanterade domäner med API-token kommer att visas. Klicka på 'Skapa token'.

  En skärmdump av en datorbeskrivning som genereras automatiskt

En API-token bör skapas. Kopiera API-token någonstans säkert så att du inte tappar bort den. När du lämnar den här sidan kommer du inte att kunna hitta denna API-token igen. Du måste generera en ny API-token om du skulle förlora den:

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  En skärmdump av en datorbeskrivning som genereras automatiskt

Säker lagring av CloudFlare API-token på datorn/servern

Certbot måste använda CloudFlare API-token för att lägga till en ny TXT-post för din domän i CloudFlare DNS-server. Så du måste lagra CloudFlare API-token på din dator/server. Att lagra API-token utan att säkerställa rätt filåtkomstbehörigheter kan tillåta andra program/användare med åtkomst till API-token. Detta är inte vad du vill av säkerhetsskäl. I det här avsnittet kommer vi att visa dig hur du säkert lagrar CloudFlare API-token i filsystemet.

Skapa först en katalog (dvs. ~/.secrets/certbot) där du vill lagra CloudFlare API-nyckeln enligt följande:

$ mkdir -pv ~ / .hemligheter / certbot

  En skärmdump av en datorbeskrivning som genereras automatiskt

Skapa en 'cloudflare.ini'-fil i den nyskapade katalogen (dvs. ~/.secrets/certbot) och öppna den med din favorittextredigerare (dvs. nano) enligt följande:

$ nano ~ / .hemligheter / certbot / cloudflare.ini

Skriv in följande rad i filen 'cloudflare.ini' och tryck + X följt av 'Y' och för att spara den (om du använder nanotextredigeraren).

dns_cloudflare_api_token = < din-cloudflare-api-token >

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att säkerställa en korrekt åtkomstbehörighet för filen 'cloudflare.ini', kör följande kommandon för att se till att endast rotanvändaren har läs- och skrivåtkomst till filen:

$ sudo chown root:root ~ / .hemligheter / certbot / cloudflare.ini

$ sudo chmod 0600 ~ / .hemligheter / certbot / cloudflare.ini

Som du kan se är det bara root-användaren som har läs- och skrivbehörigheter till filen 'cloudflare.ini'.

$ ls -lh ~ / .hemligheter / certbot / cloudflare.ini

Andra användare som försöker läsa filen 'cloudflare.ini' kommer att få ett 'Permission denied' felmeddelande.

$ katt ~ / .hemligheter / certbot / cloudflare.ini

  En skärmdump av en dator Beskrivning genereras automatiskt

Generera ett SSL-certifikat med Certbot CloudFlare DNS-validering

För att generera ett Let's Encrypt SSL-certifikat för jokerteckendomännamnet '*.nodekite.com' med CloudFlare DNS-validering, kör kommandot cerbot enligt följande:

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-referenser ~ / .hemligheter / certbot / cloudflare.ini -d * .nodekite.com

Så här genererar du ett Let's Encrypt SSL-certifikat för domännamnen 'nodekite.com' och 'www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-referenser ~ / .hemligheter / certbot / cloudflare.ini -d www.nodekite.com -d nodekite.com

Om DNS-ändringarna tar lång tid att spridas till de populära DNS-namnservrarna över hela världen kan du använda alternativet '–dns-cloudflare-propagation-seconds' i Certbot för att ställa in antalet sekunder som du vill att Certbot ska vänta innan DNS-valideringen utförs.

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-referenser ~ / .hemligheter / certbot / cloudflare.ini --dns-cloudflare-propagation-seconds 60 -d * .nodekite.com

När du har kört Certbot-kommandot kommer du att bli ombedd att skriva in din e-postadress. Skriv in din e-postadress och tryck att fortsätta.

Tryck på 'Y' och tryck sedan på för att acceptera 'Användarvillkoren' för Let's Encrypt.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Tryck på 'Y' och tryck sedan på .

  En skärmdump av ett datorprogram Beskrivning genereras automatiskt

Ett Let's Encrypt SSL-certifikat utfärdas. Det tar ett tag att slutföra.

  En skärmdump av ett datorfel Beskrivning genereras automatiskt

Vid denna tidpunkt utfärdas Let's Encrypt SSL-certifikatet. Den fullständiga sökvägen där SSL-certifikatfilerna sparas ska visas. Förfallodatumet för SSL-certifikatet bör också visas.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Lista Let's Encrypt SSL-certifikat med Certbot

Du kan lista alla Let's Encrypt SSL-certifikat som du genererade med Certbot med följande kommando:

$ sudo certbot-certifikat

Som du kan se är det genererade Let's Encrypt SSL-certifikatet för 'nodekite.com'-domänen listat [1] . Ett jokertecken SSL-certifikat utfärdas för 'nodekite.com' [2] domän namn. Certifikatets utgångsdatum är 2024-03-20 (giltigt i 89 dagar) [3] . Certifikatet och sökvägen för den privata nyckeln listas också här [4] .

  En skärmdump av en datorbeskrivning som genereras automatiskt

Certbot lagrar alla SSL-certifikat som du genererade för dina domäner i katalogen '/etc/letsencrypt/live' i deras respektive mapp.

$ sudo ls -Rlh / etc / letsencrypt / leva /

  En skärmdump av en datorbeskrivning som genereras automatiskt

Förnya Let's Encrypt SSL-certifikat med Certbot

Certbot förnyar automatiskt alla Let's Encrypt SSL-certifikat som du genererade med CloudFlare DNS-validering.

För att testa om funktionen för automatisk förnyelse av Let's Encrypt SSL-certifikaten fungerar, kör följande kommando:

$ sudo certbot förnya --torrkörning

Åtgärden för automatisk förnyelse simuleras för vart och ett av Let's Encrypt SSL-certifikaten som du genererade.

  En skärmdump av en datorbeskrivning som genereras automatiskt

Om testerna är framgångsrika kommer du att bli gratulerad. Ett lyckat test innebär att SSL-certifikaten kommer att förnyas automatiskt innan de löper ut. Du behöver inte göra något annat.

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att funktionen för automatisk förnyelse av Certbot ska fungera måste systemtimern 'cerbot.timer' vara aktiverad och aktiv på din dator/server.

Du kan kontrollera om systemtimern 'cerbot.timer' är aktiverad och aktiv med följande kommando:

$ sudo systemctl status certbot.timer

Som du kan se är systemtimern 'certbot.timer' aktiverad (startar automatiskt vid uppstart) [1] och aktiv [2] . Certbot kontrollerar om det finns ett behov av att förnya något SSL-certifikat efter bara 11 minuter (enligt följande skärmdump) och förnyar de SSL-certifikat som är på väg att löpa ut [3] .

  En skärmdump av en datorbeskrivning som genereras automatiskt

För att manuellt kontrollera om något SSL-certifikat håller på att löpa ut och förnya de utgående SSL-certifikaten, kör följande kommando:

$ sudo certbot förnya

I vårt fall är inget SSL-certifikat på väg att löpa ut. Så Certbot försökte inte förnya något SSL-certifikat.

För att tvinga Certbot att förnya SSL-certifikatet för en specifik domän (låt oss säga *.nodekite.com), kör följande kommando:

$ sudo certbot certonly --tvinga-förnya -d * .nodekite.com

Tryck på '1' och tryck för att välja det första alternativet (för DNS-validering med CloudFlare DNS).

  En skärmdump av en datorbeskrivning som genereras automatiskt

SSL-certifikatet bör förnyas.

Slutsats

För att få ett Let's Encrypt SSL-certifikat med CloudFlare DNS-validering med Certbot behöver du tillgång till CloudFlare API-token. I den här artikeln visade vi dig hur du skapar en CloudFlare API-token för din domän och lagrar den säkert på din dator/server så att du kan komma åt den med Certbot när det behövs. Vi visade dig också hur du installerar Certbot och Certbot CloudFlare DNS-plugin på de mest populära Linux-distributionerna. Vi visade dig hur du genererar Let's Encrypt jokertecken SSL-certifikat samt SSL-certifikat för enstaka domäner med Certbot och CloudFlare DNS-validering. Slutligen visade vi dig hur du förnyar Let's Encrypt SSL-certifikaten med Certbot automatiskt och manuellt.

Referenser: