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:
- Administrer domenet ditt med CloudFlare DNS
- Installere Certbot og Certbot CloudFlare Plugin på Ubuntu/Debian
- Installere Certbot og Certbot CloudFlare Plugin på Fedora
- Installere Certbot og Certbot CloudFlare Plugin på RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Sjekker om Certbot og Certbot CloudFlare Plugin er riktig installert
- Genererer et CloudFlare API-token
- Sikker lagring av CloudFlare API-token på datamaskinen/serveren
- Generere et SSL-sertifikat ved å bruke Certbot CloudFlare DNS-validering
- Liste over Let's Encrypt SSL-sertifikater ved hjelp av Certbot
- Fornyelse av Let's Encrypt SSL-sertifikater ved hjelp av Certbot
- Konklusjon
- 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
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
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
Certbot og Certbot CloudFlare DNS-plugin blir installert. Det tar en stund å fullføre.
På dette tidspunktet bør Certbot og Certbot CloudFlare DNS-plugin være installert på Fedora.
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
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
Certbot og Certbot CloudFlare DNS-plugin blir installert. Det tar en stund å fullføre.
For å godta GPG-nøkkelen til EPEL-depotet, trykk 'Y' og trykk deretter
På dette tidspunktet skal Certbot og Certbot CloudFlare DNS-plugin være installert.
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 --versjonHvis 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.
For å sjekke om Certbot CloudFlare DNS-plugin er installert på datamaskinen din, kjør følgende kommando:
$ sudo certbot-pluginsHvis Certbot CloudFlare DNS-plugin er installert, bør du finne 'dns-cloudflare' i plugin-listen som markert i følgende skjermbilde:
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] .
Klikk på 'Bruk mal' fra delen 'Rediger sone DNS'.
Fra 'Tillatelse'-delen, tillat 'Rediger'-tillatelse til 'DNS-sone' ved å velge de merkede alternativene fra rullegardinmenyene.
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.
Hvis du vil bruke en enkelt API-nøkkel for å endre alle CloudFlare-administrerte domener, velg 'Alle soner' fra 'Soneressurs'-delen.
Når du er ferdig med å konfigurere API-tokenet ditt, klikker du på 'Fortsett til sammendraget'.
Et sammendrag av handlingene du kan utføre på dine CloudFlare-administrerte domener med API-tokenet vil bli vist. Klikk på 'Opprett token'.
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
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
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
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
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.comSlik 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.comHvis 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
Trykk 'Y' og trykk deretter
Trykk 'Y' og trykk deretter
Et Let's Encrypt SSL-sertifikat blir utstedt. Det tar en stund å fullføre.
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.
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-sertifikaterSom 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] .
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 /
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øringDen automatiske fornyelseshandlingen simuleres for hvert av Let's Encrypt SSL-sertifikatene du genererte.
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.
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.timerSom 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] .
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 fornyeI 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
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.