Oversigt #
Let's Encrypt er en åben og automatiseret certifikatmyndighed, der bruger ACME (Automatisk certifikatstyringsmiljø)-protokol til at levere gratis TLS/SSL-certifikater til enhver kompatibel klient. Disse certifikater kan bruges til at kryptere kommunikationen mellem webserverne og brugerne.
Denne vejledning vil kort diskutere certifikatmyndigheder og hvordan RELIANOID integrationen fungerer med Let's Encrypt, og gennemgå derefter hvordan RELIANOID anvender certbot (ACME-klient) for at kunne kommunikere med Let's Encrypt-infrastrukturen.
RELIANOID Load Balancer 6.0.3 eller nyere versioner inkluderer en lille certbot-wrapper kaldet letsencryptz For at kunne bruge Certbots webroot-funktionalitet, forklarer de følgende linjer, hvordan denne wrapper fungerer. Tag venligst alt dette i betragtning for at få den til at fungere i produktionsmiljøer.
Hvordan fungerer Let's Encrypt-validering? #
Som en kort beskrivelse af webroot-funktionaliteten fungerer webroot-pluginnet ved at oprette en midlertidig fil for hvert af dine anmodede domæner i RELIANOID filsti /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/Derefter foretager Let's Encrypt-valideringsserveren HTTP-anmodninger for at validere, at DNS'en for hvert anmodet domæne er relateret til den server, der kører letsencryptz-wrapper, og at den midlertidige fil til valideringsformål er tilgængelig. Følgende diagram beskriver et reelt eksempel:
I det foregående diagram, RELIANOID Load balancer er bag en router/firewall med en offentlig IP-adresse 185.79.20.147 (som et eksempel) er HTTP- og HTTPS-trafikken knyttet til en intern load balancer med VIP 192.168.101.31 (som et eksempel), hvor load balancer er konfigureret med 2 forskellige farms:
HTTPS-farmnavn WebHosting via 192.168.101.31:443Denne farm er ansvarlig for at tilbyde webhosting, og forskellige webservere publiceres sammen med dette til internettet. For eksempel, test1.relianoid.com, test2.relianoid.com, test3.relianoid.com tester blandt andet websider, der er offentliggjort på denne virtuelle tjeneste.
HTTP-farmnavn WebhostingOmdirigering via 192.168.101.31:80Denne farm bruges kun til omdirigering, den tvinger al trafik fra HTTP til HTTPS.
Det foregående diagram beskriver en anmodning om et SSL Let's Encrypt-certifikat for domænet. test1.relianoid.com som følger:
1. En certifikatanmodning sendes fra selve load balancer'en til Let's Encrypt-infrastrukturen.
2. Lad os kryptere registrerer den nye SSL-certifikatanmodning for test1.relianoid.com
3. Lad os kryptere og køre en DNS IP-opløsning for den anmodede vært: test1.relianoid.com kontrollerer, at resultatet er den offentlige IP-adresse, den samme oprindelses-IP-adresse, der initierede anmodningen.
4. På dette tidspunkt Lad os kryptere annoncerer til letsencryptz script (webroot cerbot) som den skal bruge for at oprette en fil med en HASH på den offentlige vej http://test1.relianoid.com/.well-know/acme-challenge/ (80 TCP-port), lokal mappe /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Derefter, letsencryptz konfigurerer en temporal tjeneste for at gøre denne fil tilgængelig fra internettet (farmen WebhostingOmdirigering vil blive ændret til dette formål. Hvis der ikke allerede er konfigureret en gård letsencryptz vil oprette en midlertidig en i denne VIP og Port).
6. Så snart som letsencryptz bekræfter oprettelsen af den midlertidige tjeneste, Lader Krypteringsservere verificere, at den midlertidige valideringsfil er blevet oprettet, og HASH indholdet er korrekt.
7. Endelig svarer Let's Encrypt-serverne på den første anmodning med det allerede oprettede certifikat til Almindeligt navn (CN) test1.relianoid.com.
8. RELIANOID gemmer det allerede oprettede certifikat i den lokale sti /usr/local/relianoid/config/ og den er klar til at blive konfigureret i farmen WebHosting.
På dette tidspunkt vil det nye Let's Encrypt-certifikat blive brugt til den virtuelle HTTPS-tjeneste.
Lad os kryptere automatiseringskommandoer #
Som beskrevet, den letsencryptz Scriptet automatiserer de nødvendige handlinger til at administrere dine SSL-certifikater, såsom oprettelse, fornyelse, destruktion eller listevisning, blandt andet. Find de tilgængelige kommandoer nedenfor.
root@zva6k:~# letsencryptz letsencryptz beskrivelse: letsencryptz er en let's encrypt (certbot) wrapper med minimale parametre, klar til at administrere Let's Encrypt-certifikater til Relianoid https-profiler. Husk at denne wrapper bruger certbot webroot-funktionen, så den offentlige Let's Encrypt-arkitektur kræver forbindelse til en lokal virtuel IP-adresse og port (TCP 80 som standard) for at kunne udføre en anmodningsvalidering for det anmodede domæne. Så snart parameteren "obtain" bruges, konfigurerer dette script en HTTP-farm, som Let's Encrypt tilgår til verifikationsformål. Denne konfiguration udføres automatisk af selve scriptet. Sørg blot for, at den anvendte virtuelle IP-adresse og HTTP-port 80 ikke bruges af en anden load-balanced farm, og sørg også for, at DNS-opløsningen for det anmodede domæne kan nås fra Let's Encrypt-systemet.
brug: /usr/local/relianoid/bin/letsencryptz handling: --obtain | --destroy | --renew | --list | --listconf | --help --obtain: Anmod om nye certifikater ved hjælp af webroot cert-bot-modulet.
kommandoer: --vip --gård --domæne --domæne --domæne --test --vip: Den virtuelle IP-adresse er allerede konfigureret til at udgive en temporær webserver. Denne vil blive forbundet via "let's encrypt public"-servere for at verificere certifikatanmodningen. Den virtuelle IP-adresse skal være ledig på port 80 for at være bundet af en lokal proces. Hvis den ikke er ledig, så brug --farm i stedet.
--farm: Farmnavnet, der konfigurerer en midlertidig tjeneste kaldet "letsencryptz". Hvis der ikke bruges en farm, konfigureres en midlertidig farm kaldet "letsencryptRelianoid" i den valgte virtuelle IP.
--domain: Det domæne, som anmoder om certifikatet for, f.eks. www.mitfirma.com.
--test: Valgfri parameter, hvis brugt, anmodes certifikatet til testformål.
--destroy: Tilbagekald og slet det angivne certifikatnavn, handlingen afvises, hvis det givne certifikat er i brug af en gård.
kommandoer: --certnavn --certname: Certifikatnavn, denne værdi kan hentes fra handlingen --list.
--renew: Forny certifikaterne tæt på udløb, ingen kommandoer nødvendige kommandoer: --test --forcerestart --vip --gård --test: Valgfri parameter, hvis brugt udføres en testkørsel, og fornyelsen af certifikaterne simuleres.
--forcerestart: Valgfri parameter. Hvis den bruges, genstartes de gårde, der bruger de fornyede certifikater, for at ændringerne kan anvendes.
--vip: Den virtuelle IP-adresse er allerede konfigureret til at udgive en temporær webserver. Denne vil blive forbundet via "let's encrypt public"-servere for at bekræfte certifikatfornyelsen. Den virtuelle IP-adresse skal være ledig på port 80 for at være bundet af en lokal proces. Hvis den ikke er ledig, så brug --farm i stedet.
--farm: Farmnavnet, der konfigurerer en midlertidig tjeneste kaldet "letsencryptz". Hvis der ikke bruges en farm, konfigureres en midlertidig farm kaldet "letsencryptRelainoid" i den valgte virtuelle IP.
--list: Liste over alle lokale certifikater, der administreres af let's encrypt, og status. Ingen kommandoer er nødvendige.
--listconf: AngivRELIANOID
Det vil tage noget tid første gang letsencryptz køres, fordi systemet automatisk installerer uløste afhængigheder. Derudover foretages en konfigurationsgennemgang, før det kan bruges. Let's Encrypt anmoder om en e-mailkonto eller kontaktformål relateret til certifikaterne. Denne e-mailkonto vil blive brugt sammen med enhver handling, der udføres mod Let's Encrypt-systemet. Denne e-mail kan konfigureres i den primære konfigurationsfil. /usr/local/relianoid/config/global.conf, direktiv $le_email.
Nogle brugseksempler er vist nedenfor.
RELIANOID Lad os kryptere oprettelse af certifikater #
Denne kommando anmoder om et nyt certifikat til domænet test2.relianoid.comHusk at den givne VIP vil være den interne, hvis trafik skal dirigeres fra den offentlige IP-adresse til den interne. Hvis Let's Encrypt ikke kan nå denne tjeneste, vil anmodningen blive afvist.
root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.relianoid.com ADVARSEL: Intet farmnavn angivet, en temporal farm med navnet letsencryptRelianoid vil blive oprettet i VIP 192.168.101.31 port 80. Konfigurerer farm til let's encrypt Certifikatnavnverifikation Henter certifikat for domænerne test2.relianoid.com... Gemmer debuglog til /var/log/letsencrypt/letsencrypt.log Valgte plugins: Authenticator webroot, Installer Ingen Henter et nyt certifikat Ikke-standard sti(er), fungerer muligvis ikke med crontab installeret af din operativsystempakkehåndtering Certifikatanmodning for domæne(rne) test2.relianoid.com OK Oprettet Certifikatnavn test2.relianoid.com i PEM-format klar til HTTPS-profil Ødelægger webroot-konfigurationen for farmen letsencryptRelianoid Sletter allerede konfiguration for letsencryptRelianoid, service letsencryptz Genstarter farme ved hjælp af renewed certifikater:
RELIANOID Lad os kryptere certifikatliste #
Udførelsen af denne kommando vil vise de aktuelle certifikater, der administreres af RELIANOID Lad os kryptere systemet.
root@zva6k:~# letsencryptz --list Viser en liste over alle tilgængelige certifikater for den aktuelle konfiguration i konfigurationsmappe /usr/local/relianoid/config/letsencrypt/ Gemmer fejlfindingslog i /var/log/letsencrypt/letsencrypt.log Certifikatnavn: test1.relianoid.com Domæne(r): test1.relianoid.com Udløbsdato: 2019-09-19 10:48:02+00:00 (GYLDIG: 77 dage) Pem-certifikatfil: /usr/local/relianoid/config/test1_relianoid_es.pem Certifikatnavn: test3.relianoid.com Domæne(r): test3.relianoid.com Udløbsdato: 2019-09-26 06:32:52+00:00 (GYLDIG: 83 dage) Pem-certifikatfil: /usr/local/relianoid/config/test3_relianoid_es.pem
Tag hensyn til feltet Certifikatnavn, vil dette felt blive genkendt af letsencryptz-wrapperen som –certnavn.
RELIANOID Lad os kryptere certifikatfornyelse #
Den forrige kommando kontrollerer, om et allerede genereret certifikat kræver fornyelse, i hvilket tilfælde fornyelsen vil blive udført automatisk. Vær opmærksom på, at hvis det fornyede certifikat er i brug, vil en genstart af farmen være nødvendig for at anvende ændringen. Brug venligst indstillingen –tvungen genstart hvis du vil letsencryptz genstarter alle de nødvendige gårde for at anvende ændringerne.
root@zva6k:~# letsencryptz --renew --vip 192.168.101.31 Fornyer alle nødvendige certifikater Gemmer fejlfindingslog i /var/log/letsencrypt/letsencrypt.log Certifikatet skal endnu ikke fornyes Certifikatet skal endnu ikke fornyes
RELIANOID Lad os kryptere sletning af certifikat #
Denne kommando tilbagekalder og sletter det givne certifikat. Hvis systemet registrerer, at det valgte certifikat i øjeblikket er i brug af en HTTPS-farm, vil handlingen blive afvist. I eksemplet ovenfor afvises slettehandlingen, fordi certifikatet er i brug af farmen. testhttps.
root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Tilbagekalder og sletter certifikat(er) test3.relianoid.com for den aktuelle konfiguration... Denne fil kan ikke slettes, fordi den bruges af farmen(e): testhttps
Så snart certifikatet er fjernet fra gården, udføres handlingen:
root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Tilbagekalder og sletter certifikat(er) test3.relianoid.com for den aktuelle konfiguration... Gemmer fejlfindingslog i /var/log/letsencrypt/letsencrypt.log Slettede certifikat(er) test3.relianoid.com i stien /usr/local/relianoid/config/test3_relianoid_es.pem
Migrer Let's Encrypt-certifikater til RELIANOID #
RELIANOID Load Balancer gemmer alle konfigurationsfiler for certbot i den lokale sti /usr/local/zevenet/config/letsencrypt/For at flytte dine eksisterende certbot-konfigurationsfiler (som standard i /etc/letsencrypt) af en anden server til RELIANOID, skal du blot oprette en tarball (tar.gz-fil) af denne eksisterende konfigurationsmappe på din server og udpakke indholdet i RELIANOID Lad os kryptere konfigurationsstien. Overvej til sidst at ændre variablen $le_email i filen global.conf til den samme e-mailadresse, der blev brugt i de tidligere anmodninger.
Understøttelse af klyngedannelse i Let's Encrypt Certificates #
RELIANOID Let's Encrypt-pluginet understøttes fuldt ud med RELIANOID Klyngetjeneste. Alle Let's Encrypt-handlinger gemmes i en konfigurationsfil, der replikeres af RELIANOID Klyngetjeneste, så enhver handling udført i MASTER noden vil blive replikeret til SLAVE node automatisk, men enhver handling udført i SLAVE Noden relateret til Let's Encrypt vil blive kasseret for at undgå desynkronisering.
Lad os kryptere certifikater automatisk fornyelse #
RELIANOID Let's Encrypt-pluginet kan konfigureres til dagligt at kontrollere, om et certifikat skal fornyes. Hvis systemet automatisk fornyer et givet certifikat, og det er i brug af en gård, genstartes gården automatisk for at anvende certifikatændringen.
For at konfigurere automatisk fornyelse skal du gøre følgende:
Opret følgende cron-fil /etc/cron.d/letsencryptz med følgende indhold:
root@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * root /usr/local/relianoid/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31
Med denne konfiguration udføres fornyelsestjekket dagligt kl. 00:00 (midnat). Og VIP 192.168.101.31 bruges i port 80 til verifikationsformål fra Let's Encrypt System.
Referencer #
Nogle referencer brugt i denne artikel er:
Webroot og Certbot
Sådan fungerer Let's Encrypt
