Kako upravljati Let's Encrypt SSL-om pomoću Certbot naredbi


Kada netko posjeti vašu web stranicu, njihov preglednik i vaš poslužitelj razmjenjuju informacije naprijed-natrag. Bez enkripcije, taj razgovor se odvija u običnom tekstu, što znači da netko tko nadzire mrežu može pročitati sve: lozinke, osobne poruke, podatke o plaćanju, sve.

SSL certifikat to rješava omogućavanjem HTTPS-a, koji šifrira sve podatke između preglednika i vašeg poslužitelja. Onaj mali simbol lokota u adresnoj traci vašeg preglednika? To vam govori da je veza šifrirana i sigurna.

Godinama je dobivanje SSL certifikata značilo plaćanje certifikacijskom tijelu svake godine i prolazak kroz zamoran ručni proces postavljanja. Zatim je stigao Let’s Encrypt i promijenio sve. To je besplatno, automatizirano certifikacijsko tijelo koje postoji s jednom svrhom: učiniti šifrirane veze standardom na cijelom webu.

Ali evo u čemu je stvar: iako su Let’s Encrypt certifikati besplatni, oni ističu svaka 90 dana. Ručno upravljanje obnovama bilo bi noćna mora, i upravo zato postoji Certbot, koji je alat za komandnu liniju koji automatizira cijeli proces dobivanja, instaliranja i obnavljanja Let’s Encrypt certifikata.

U ovom vodiču proći ćemo kroz sve što trebate znati o korištenju Certbota, od prve instalacije certifikata do razumijevanja procesa obnavljanja, sve objašnjeno na način koji ima smisla čak i ako tek počinjete s Linux serverima.

Instalacija Certbota na Linuxu

Proces instalacije certbota malo se razlikuje ovisno o vašoj Linux distribuciji, ali je jednostavan u svim slučajevima.

Za sustave temeljene na Debianu, prvo ćete htjeti provjeriti je li vaš sustav ažuriran:

sudo apt update
sudo apt upgrade

Zatim instalirajte Certbot zajedno s dodatkom za vaš web poslužitelj, ako koristite nginx.

sudo apt install certbot python3-certbot-nginx

Ili ako koristite Apache.

sudo apt install certbot python3-certbot-apache

Za distribucije temeljene na RHEL-u, postupak izgleda slično, ali koristi dnf umjesto toga:

sudo dnf install certbot python3-certbot-nginx    # For Nginx
sudo dnf install certbot python3-certbot-apache   # For Apache

Dodaci za web poslužitelj su važni jer omogućuju Certbotu da automatski konfigurira vaš poslužitelj za HTTPS. Bez njih biste morali ručno uređivati konfiguracijske datoteke, što je upravo vrsta zamornog posla koji je Certbot dizajniran eliminirati.

Dobivanje vaše prve SSL potvrde

Jednom kada je Certbot instaliran, dobivanje certifikata je izuzetno jednostavno.

Za Nginx poslužitelj, naredba izgleda ovako:

sudo certbot --nginx -d example.com -d www.example.com

Ako koristite Apache, naredba je gotovo identična:

sudo certbot --apache -d example.com -d www.example.com

Kada prvi put pokrenete gore navedenu naredbu, Certbot će tražiti vašu adresu e-pošte, što je važno znati jer je Let’s Encrypt nekada slao obavijesti o isteku putem ove e-pošte, no ta je usluga od tada ukinuta kako bi se smanjilo pohranjivanje podataka. Stoga se morate osloniti na pouzdan proces automatskog obnavljanja ili postaviti vlastiti nadzor treće strane za upozorenja o isteku.

Nakon toga, Certbot obavlja svoj posao: komunicira s Let’s Encrypt, dokazuje da kontrolirate domenu, preuzima certifikat i mijenja vašu Nginx konfiguraciju kako bi koristila HTTPS.

Razumijevanje obnove SSL certifikata

Kao što sam ranije spomenuo, Let’s Encrypt certifikati istječu svakih 90 dana, stoga je važno postaviti automatizirani proces obnove. systemd timer može to riješiti tako da dvaput dnevno provjerava sve certifikate koji se približavaju isteku. Kada certifikatu preostane manje od 30 dana, Certbot ga automatski obnavlja bez potrebe za bilo kakvom ručnom intervencijom.

Možete testirati ovaj postupak obnove bez da zapravo išta obnavljate:

sudo certbot renew --dry-run

Zastavica --dry-run simulira proces obnove, što je korisno za provjeru je li sve ispravno konfigurirano. Ako naredba uspije, možete biti sigurni da će automatske obnove raditi kad dođe vrijeme.

Da biste vidjeli kada vaši certifikati istječu i provjerili njihov status obnove:

sudo certbot certificates

Možete provjeriti status tajmera kako biste potvrdili da je aktivan:

sudo systemctl status certbot.timer

Upravljanje više SSL certifikata

Kako dodajete više domena ili poddomena na svoj poslužitelj, prikupit ćete više certifikata, ali certbot to čini iznenađujuće jednostavnim za upravljanje.

Da biste dodali novu domenu postojećem certifikatu:

sudo certbot --nginx -d example.com -d www.example.com -d blog.example.com

Ako želite dobiti potpuno zasebni certifikat za drugu domenu:

sudo certbot --nginx -d another-domain.com -d www.another-domain.com

Svaki certifikat se upravlja neovisno, ali sva obnavljanja događaju se automatski putem istog procesa obnove.

Ručno obnavljanje SSL certifikata

Iako je automatsko obnavljanje cijela poanta korištenja Certbot-a, postoje situacije kada biste možda htjeli ručno prisiliti obnavljanje. Možda ste napravili promjene u konfiguraciji i želite ih testirati, ili možda rješavate neki problem.

Da biste obnovili sve certifikate kojima ističe rok, pokrenite sljedeću naredbu, koja će obnoviti samo certifikate kojima ističe rok u roku od 30 dana, dok certifikati s više od 30 dana do isteka neće biti obnovljeni.

sudo certbot renew

Ako trebate prisilno obnoviti bez obzira na datum isteka:

sudo certbot renew --force-renewal

Pregled vaših SSL certifikata

Ponekad trebate vidjeti detalje o certifikatima koje imate instalirane, na primjer ime svakog certifikata, domene koje pokriva, datum isteka i putanje datoteka gdje su pohranjeni certifikat i privatni ključ.

sudo certbot certificates

Stvarne datoteke certifikata nalaze se u /etc/letsencrypt/live/, s odvojenim direktorijima za svaki certifikat. Unutar ćete pronaći simboličke poveznice na stvarne certifikate, koji su verzionirani u direktoriju arhive.

Poništavanje SSL certifikata

Ako privatni ključ certifikata ikada bude kompromitiran, ili ako vam certifikat više nije potreban, trebali biste ga opozvati, i to odmah obavještava preglednike i druge klijente da certifikat više ne bi trebao biti pouzdan, čak i ako još nije istekao.

Za opoziv certifikata:

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

Morat ćete navesti putanju do datoteke certifikata koju želite opozvati.

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem --delete-after-revoke

Certbot će komunicirati s Let’s Encrypt kako bi opozvao certifikat i, po želji, očistio lokalne datoteke.

Brisanje SSL certifikata bez opoziva

Ponekad želite ukloniti certifikat sa svog sustava bez njegovog opoziva. Možda ste premjestili domen na drugi poslužitelj, ili ste certifikat dobili slučajno i nikada ga niste koristili.

sudo certbot delete --cert-name example.com

Ovo uklanja datoteke certifikata s vašeg sustava, ali ne opoziva certifikat kod Let’s Encrypt. Certifikat ostaje važeći ako se koristi negdje drugdje, ali Certbot će prestati upravljati njime na ovom poslužitelju.

Rješavanje problema s obnovom Certbot certifikata

Čak i uz automatizaciju Certbota, povremeno se mogu pojaviti problemi, a ovdje su najčešći i kako ih riješiti.

Ako obnova certifikata ne uspije, provjerite radi li vaš web poslužitelj i je li dostupan s interneta, jer Let’s Encrypt mora doći do vašeg poslužitelja na portu 80 ili 443 kako bi potvrdio vlasništvo nad domenom.

Možete provjeriti zapise obnove za određene poruke o pogreškama:

sudo cat /var/log/letsencrypt/letsencrypt.log

Ovi zapisi točno pokazuju što je Certbot pokušao i gdje je nezadovoljio, što vas obično izravno usmjerava na problem.

Ako se konfiguracija vašeg web poslužitelja nekako pokvari, Certbot ponekad može vratiti izvornu konfiguraciju:

sudo certbot --nginx rollback

Ovo poništava promjene napravljene od strane Certbota, iako to rijetko treba ako koristite automatske opcije konfiguracije.

Razumijevanje ograničenja brzine

Let's Encrypt ima ograničenja broja zahtjeva kako bi spriječio zlouporabu. Za normalnu upotrebu, nikada ih nećete doseći, ali je korisno znati da postoje. Možete zatražiti do 50 certifikata po registriranoj domeni tjedno, a svaki certifikat može pokrivati do 100 poddomena.

Ako testirate ili učite, slobodno koristite oznaku --dry-run, koja simulira cijeli proces bez stvarnog zahtijevanja certifikata, tako da se ne uračunava u ograničenja učestalosti.

sudo certbot renew --dry-run

Održavanje Certbota ažuriranim

Kao i svaki softver, Certbot prima ažuriranja koja ispravljaju greške i dodaju značajke, stoga je važno redovito ažurirati certbot putem vašeg uobičajenog upravitelja paketa:

sudo apt update
sudo apt upgrade certbot
Napredovanje izvan osnovne upotrebe

Kada se osjećate ugodno s osnovnim upravljanjem certifikatima, Certbot nudi i napredne opcije koje vrijedi istražiti. Možete koristiti DNS validaciju umjesto HTTP validacije, što vam omogućuje dobivanje certifikata čak i za servere koji nisu javno dostupni na portu 80 ili 443.

Možete konfigurirati prilagođene hookove za obnavljanje kako bi se skripte pokretale kada se certifikati obnove, što je korisno za ponovno pokretanje servisa ili ažuriranje konfiguracija. Možete čak dobiti wildcard certifikate koji pokrivaju sve poddomene odjednom.

Ali za većinu slučajeva korištenja, jednostavne naredbe koje smo obradili pokrivaju sve što vam treba. Certbot uzima ono što je nekada bio složen, sklon pogreškama proces i svodi ga na nekoliko jednostavnih naredbi koje jednostavno rade.