Hvordan få Let's Encrypt SSL-sertifikater ved å bruke Certbot CloudFlare DNS-validering

Hvordan Fa Let S Encrypt Ssl Sertifikater Ved A Bruke Certbot Cloudflare Dns Validering



Certbot er en ACME-klient for Let's Encrypt Certificate Authority (CA). Det brukes til å generere et Let's Encrypt SSL-sertifikat og fornye det automatisk. Som standard bruker Certbot Let's Encrypt HTTP-01-utfordringen for å bekrefte eierskapet til domenet og utstede et SSL-sertifikat for domenet. Men HTTP-01-utfordringen vil ikke fungere med mindre du har en offentlig IP-adresse og datamaskinen din er tilgjengelig fra internett. Så hvis du vil bruke Let's Encrypt SSL-sertifikatene for ditt hjemmenettverk eller private nettverk, må du bruke DNS-01-utfordringen i stedet. Når DNS-01-utfordringen brukes, verifiserer Let's Encrypt eierskapet til domenet ved å bruke DNS-serveren til domenet. Så det fungerer for private nettverk også.

For en detaljert forklaring på hvordan Let's Encrypt DNS-01-utfordringen (eller DNS-validering) fungerer, les artikkelen med tittelen What Is Let's Encrypt DNS-01 Challenge og hvordan du bruker den til å få SSL-sertifikatene.

I denne artikkelen vil vi vise deg hvordan du bruker Let's Encrypt DNS-validering for å få et SSL-sertifikat for domenenavnet ditt ved å bruke Certbot og Certbot CloudFlare DNS-plugin.







Innholdsemne:

  1. Administrer domenet ditt med CloudFlare DNS
  2. Installere Certbot og Certbot CloudFlare Plugin på Ubuntu/Debian
  3. Installere Certbot og Certbot CloudFlare Plugin på Fedora
  4. Installere Certbot og Certbot CloudFlare Plugin på RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Sjekker om Certbot og Certbot CloudFlare Plugin er riktig installert
  6. Genererer et CloudFlare API-token
  7. Sikker lagring av CloudFlare API-token på datamaskinen/serveren
  8. Generere et SSL-sertifikat ved å bruke Certbot CloudFlare DNS-validering
  9. Liste over Let's Encrypt SSL-sertifikater ved hjelp av Certbot
  10. Fornyelse av Let's Encrypt SSL-sertifikater ved hjelp av Certbot
  11. Konklusjon
  12. Referanser

Administrer domenet ditt med CloudFlare DNS

For å få et Let's Encrypt SSL-sertifikat ved å bruke CloudFlare DNS-validering, må du ha en CloudFlare-konto og domenet ditt må bruke CloudFlare DNS. Du kan opprette en CloudFlare-konto gratis og CloudFlare DNS-tjenesten er også gratis å bruke.



For å administrere domenet ditt med CloudFlare DNS, kan du gjøre ett av følgende:



  • Registrer domenet ditt fra CloudFlare
  • Overfør domenet ditt til CloudFlare
  • Endre DNS-navneserveren til domenenavnet ditt til CloudFlare DNS-navneserveren fra dashbordet til domeneregistratoren din

Du trenger ikke å kjøpe et domene fra CloudFlare eller overføre et domene til CloudFlare for å administrere det med CloudFlare DNS-tjenesten. Du kan bare endre navneserveren til domenet ditt til CloudFlare DNS-navneserveren fra dashbordet til domeneregistratoren din (hvor du kjøpte domenet fra) og administrere domenet ditt fra CloudFlare. For mer informasjon om å endre navneserveren til domenet ditt til CloudFlare DNS-navneserveren, les denne artikkelen.





Installere Certbot og Certbot CloudFlare Plugin på Ubuntu/Debian

Certbot og Certbot CloudFlare plugin er tilgjengelig i det offisielle pakkelageret til Ubuntu/Debian. Så du kan installere dem på Ubuntu/Debian veldig enkelt.

Først oppdaterer du APT-pakkelageret med følgende kommando:



$ sudo passende oppdatering

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For å installere Certbot og Certbot CloudFlare DNS-plugin, kjør følgende kommando:

$ sudo apt installere certbot python3-certbot-dns-cloudflare

For å bekrefte installasjonen, trykk 'Y' og trykk deretter .

Certbot og Certbot CloudFlare DNS-plugin blir installert. Det tar en stund å fullføre.

På dette tidspunktet skal Certbot og Certbot CloudFlare DNS-plugin være installert.

Installere Certbot og Certbot CloudFlare Plugin på Fedora

Certbot og Certbot CloudFlare plugin er tilgjengelig i det offisielle pakkelageret til Fedora og kan installeres på Fedora veldig enkelt.

Først oppdaterer du DNF-pakkedatabasen med følgende kommando:

$ sudo dnf makecache

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For å installere Certbot og Certbot CloudFlare DNS-plugin på Fedora, kjør følgende kommando:

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

For å bekrefte installasjonen, trykk 'Y' og trykk deretter .

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Certbot og Certbot CloudFlare DNS-plugin blir installert. Det tar en stund å fullføre.

  Et skjermbilde av et dataprogram Beskrivelse generert automatisk

På dette tidspunktet bør Certbot og Certbot CloudFlare DNS-plugin være installert på Fedora.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Installere Certbot og Certbot CloudFlare Plugin på RHEL/AlmaLinux/Rocky Linux/CentOS Stream

Certbot CloudFlare DNS-plugin er ikke tilgjengelig i de offisielle pakkedepotene til RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Certbot CloudFlare DNS-plugin er tilgjengelig i EPEL-pakkelageret. Du kan aktivere EPEL-pakkelageret på RHEL/AlmaLinux/Rocky Linux/CentOS Stream og installere Certbot CloudFlare DNS-plugin derfra.

Når du har aktivert EPEL-pakkelageret, oppdaterer du DNF-databasebufferen med følgende kommando:

$ sudo dnf makecache

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Installer deretter Certbot og Certbot CloudFlare DNS-plugin på RHEL/AlmaLinux/Rocky Linux/CentOS Stream-systemet med følgende kommando:

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

For å bekrefte installasjonen, trykk 'Y' og trykk deretter .

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Certbot og Certbot CloudFlare DNS-plugin blir installert. Det tar en stund å fullføre.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For å godta GPG-nøkkelen til EPEL-depotet, trykk 'Y' og trykk deretter .

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

På dette tidspunktet skal Certbot og Certbot CloudFlare DNS-plugin være installert.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Sjekker om Certbot og Certbot CloudFlare Plugin er riktig installert

For å sjekke om Certbot er installert på datamaskinen din, kjør følgende kommando:

$ certbot --versjon

Hvis Certbot er installert, skal kommandoen skrive ut versjonsnummeret til den installerte Certboten på datamaskinen din.

Som du kan se, har vi Certbot 2.1.0 installert på Debian-maskinen vår.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For å sjekke om Certbot CloudFlare DNS-plugin er installert på datamaskinen din, kjør følgende kommando:

$ sudo certbot-plugins

Hvis Certbot CloudFlare DNS-plugin er installert, bør du finne 'dns-cloudflare' i plugin-listen som markert i følgende skjermbilde:

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Genererer et CloudFlare API-token

For å bekrefte eierskapet til domenet, må Certbot legge til en TXT-post på domenet som administreres av CloudFlare DNS-serveren. For det trenger Certbot tilgang til CloudFlare API-token. Du kan opprette et API-token for domenet ditt fra CloudFlare-dashbordet.

Først, logg inn på CloudFlare-kontoen din. Klikk deretter på profilikonet ditt

> Min profil fra øverste høyre hjørne av siden.

Naviger til delen 'API-tokens'. [1] og klikk på 'Opprett token' [2] .

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Klikk på 'Bruk mal' fra delen 'Rediger sone DNS'.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Fra 'Tillatelse'-delen, tillat 'Rediger'-tillatelse til 'DNS-sone' ved å velge de merkede alternativene fra rullegardinmenyene.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Hvis du administrerer flere domener med CloudFlare, kan du tillate endring av en 'Spesifikk sone' fra 'Soneressurs'-delen. Å tillate et API-token å endre bare en enkelt sone er sikrere enn å la API-tokenet endre alle soner. Dette er fordi hvis API-tokenet er kompromittert, vil angrepsoverflaten være mindre og mindre skade vil bli gjort.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Hvis du vil bruke en enkelt API-nøkkel for å endre alle CloudFlare-administrerte domener, velg 'Alle soner' fra 'Soneressurs'-delen.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Når du er ferdig med å konfigurere API-tokenet ditt, klikker du på 'Fortsett til sammendraget'.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Et sammendrag av handlingene du kan utføre på dine CloudFlare-administrerte domener med API-tokenet vil bli vist. Klikk på 'Opprett token'.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Et API-token bør opprettes. Kopier API-tokenet et trygt sted, slik at du ikke mister det. Når du forlater denne siden, vil du ikke kunne finne dette API-tokenet igjen. Du må generere et nytt API-token i tilfelle du mister det:

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Sikker lagring av CloudFlare API-token på datamaskinen/serveren

Certbot må bruke CloudFlare API-token for å legge til en ny TXT-post for domenet ditt i CloudFlare DNS-serveren. Så du må lagre CloudFlare API-token på datamaskinen/serveren din. Lagring av API-tokenet uten å sikre de riktige filtilgangstillatelsene kan tillate andre programmer/brukere med tilgang til API-tokenet. Dette er ikke hva du ønsker av sikkerhetsmessige årsaker. I denne delen vil vi vise deg hvordan du trygt lagrer CloudFlare API-token på filsystemet.

Opprett først en katalog (dvs. ~/.secrets/certbot) der du vil lagre CloudFlare API-nøkkelen som følger:

$ mkdir -pv ~ / .hemmeligheter / certbot

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Opprett en 'cloudflare.ini' fil i den nyopprettede katalogen (dvs. ~/.secrets/certbot) og åpne den med din favoritt tekstredigerer (dvs. nano) som følger:

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

Skriv inn følgende linje i 'cloudflare.ini'-filen og trykk + X etterfulgt av 'Y' og for å lagre den (hvis du bruker nanotekstredigereren).

dns_cloudflare_api_token = < din-cloudflare-api-token >

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For å sikre en riktig tilgangstillatelse for 'cloudflare.ini'-filen, kjør følgende kommandoer for å sikre at bare rotbrukeren har lese- og skrivetilgang til filen:

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

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

Som du kan se, er det bare root-brukeren som har lese- og skriverettigheter til filen 'cloudflare.ini'.

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

Andre brukere som prøver å lese 'cloudflare.ini'-filen vil få en 'Permission denied' feilmelding.

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

  Et skjermbilde av en datamaskin Beskrivelse generert automatisk

Generere et SSL-sertifikat ved å bruke Certbot CloudFlare DNS-validering

For å generere et Let's Encrypt SSL-sertifikat for wildcard-domenenavnet '*.nodekite.com' ved å bruke CloudFlare DNS-validering, kjør cerbot-kommandoen som følger:

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-legitimasjon ~ / .hemmeligheter / certbot / cloudflare.ini -d * .nodekite.com

Slik genererer du et Let's Encrypt SSL-sertifikat for domenenavnene 'nodekite.com' og '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-legitimasjon ~ / .hemmeligheter / certbot / cloudflare.ini -d www.nodekite.com -d nodekite.com

Hvis DNS-endringene tar lang tid å spre seg til de populære DNS-navneserverne over hele verden, kan du bruke '–dns-cloudflare-propagation-seconds'-alternativet til Certbot for å angi antall sekunder du vil at Certbot skal vente før DNS-valideringen er utført.

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

Når du kjører Certbot-kommandoen, vil du bli bedt om å skrive inn e-postadressen din. Skriv inn e-postadressen din og trykk å fortsette.

Trykk 'Y' og trykk deretter for å godta 'Tjenestevilkårene' til Let's Encrypt.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Trykk 'Y' og trykk deretter .

  Et skjermbilde av et dataprogram Beskrivelse generert automatisk

Et Let's Encrypt SSL-sertifikat blir utstedt. Det tar en stund å fullføre.

  Et skjermbilde av en datamaskinfeil Beskrivelse generert automatisk

På dette tidspunktet utstedes Let's Encrypt SSL-sertifikatet. Den fullstendige banen der SSL-sertifikatfilene er lagret skal vises. Utløpsdatoen for SSL-sertifikatet skal også vises.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Liste over Let's Encrypt SSL-sertifikater ved hjelp av Certbot

Du kan liste opp alle Let's Encrypt SSL-sertifikatene som du genererte ved hjelp av Certbot med følgende kommando:

$ sudo certbot-sertifikater

Som du kan se, er det genererte Let's Encrypt SSL-sertifikatet for 'nodekite.com'-domenet oppført [1] . Et jokertegn SSL-sertifikat utstedes for 'nodekite.com' [2] domenenavn. Utløpsdatoen for sertifikatet er 2024-03-20 (gyldig i 89 dager) [3] . Sertifikatet og den private nøkkelbanen er også oppført her [4] .

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Certbot lagrer alle SSL-sertifikatene du genererte for domenene dine i '/etc/letsencrypt/live'-katalogen i deres respektive mappe.

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

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Fornyelse av Let's Encrypt SSL-sertifikater ved hjelp av Certbot

Certbot fornyer automatisk alle Let's Encrypt SSL-sertifikatene som du genererte ved hjelp av CloudFlare DNS-validering.

For å teste om funksjonen for automatisk fornyelse av Let's Encrypt SSL-sertifikater fungerer, kjør følgende kommando:

$ sudo certbot fornye --tørrkjøring

Den automatiske fornyelseshandlingen simuleres for hvert av Let's Encrypt SSL-sertifikatene du genererte.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

Hvis testene er vellykkede, vil du bli gratulert. En vellykket test betyr at SSL-sertifikatene blir automatisk fornyet før de utløper. Du trenger ikke å gjøre noe annet.

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For at funksjonen for automatisk fornyelse av Certbot skal fungere, må systemtidtakeren 'cerbot.timer' være aktivert og aktiv på datamaskinen/serveren din.

Du kan sjekke om 'cerbot.timer' systemd timer er aktivert og aktiv med følgende kommando:

$ sudo systemctl status certbot.timer

Som du kan se, er 'certbot.timer' systemd-timeren aktivert (starter automatisk ved oppstart) [1] og aktiv [2] . Certbot sjekker om det er behov for å fornye et SSL-sertifikat etter bare 11 minutter (i henhold til følgende skjermbilde) og fornyer SSL-sertifikatene som er i ferd med å utløpe [3] .

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

For å manuelt sjekke om et SSL-sertifikat er i ferd med å utløpe og fornye de utløpende SSL-sertifikatene, kjør følgende kommando:

$ sudo certbot fornye

I vårt tilfelle er ingen SSL-sertifikat i ferd med å utløpe. Så Certbot forsøkte ikke å fornye noe SSL-sertifikat.

For å tvinge Certbot til å fornye SSL-sertifikatet til et spesifikt domene (la oss si *.nodekite.com), kjør følgende kommando:

$ sudo certbot certonly --tvinge-fornye -d * .nodekite.com

Trykk '1' og trykk for å velge det første alternativet (for DNS-validering ved bruk av CloudFlare DNS).

  Et skjermbilde av en datamaskinbeskrivelse generert automatisk

SSL-sertifikatet bør fornyes.

Konklusjon

For å få et Let's Encrypt SSL-sertifikat ved å bruke CloudFlare DNS-validering ved hjelp av Certbot, trenger du tilgang til CloudFlare API-token. I denne artikkelen viste vi deg hvordan du lager et CloudFlare API-token for domenet ditt og lagrer det sikkert på datamaskinen/serveren din slik at du kan få tilgang til den med Certbot når det trengs. Vi viste deg også hvordan du installerer Certbot og Certbot CloudFlare DNS-plugin på de mest populære Linux-distribusjonene. Vi viste deg hvordan du genererer Let's Encrypt jokertegn SSL-sertifikater samt SSL-sertifikater for enkeltdomener ved å bruke Certbot og CloudFlare DNS-validering. Til slutt viste vi deg hvordan du fornyer Let's Encrypt SSL-sertifikater ved å bruke Certbot automatisk og manuelt.

Referanser: