Let’s Encrypt wildcard sertifikatai

Kas tie wildcard sertifikatai ir kam jų reikia

Jei kada nors teko valdyti daugiau nei vieną subdomeną, tikriausiai susidūrėte su situacija, kai reikia kiekvienam iš jų išduoti atskirą SSL sertifikatą. Tai gali tapti tikru galvos skausmu, ypač kai turite dinamiškai kuriamus subdomenus arba jų skaičius nuolat auga. Čia ir ateina į pagalbą wildcard sertifikatai.

Wildcard sertifikatas – tai SSL/TLS sertifikatas, kuris apsaugo pagrindinį domeną ir visus jo pirmo lygio subdomenus vienu metu. Pavyzdžiui, sertifikatas *.example.com veiks tiek blog.example.com, tiek shop.example.com, tiek api.example.com. Patogu, ar ne?

Let’s Encrypt pradėjo palaikyti wildcard sertifikatus 2018 metų kovą, ir tai buvo tikras proveržis. Anksčiau už tokius sertifikatus reikėdavo mokėti nemažus pinigus komercinėms sertifikavimo institucijoms. Dabar galite gauti juos visiškai nemokamai, tačiau yra keletas niuansų, kuriuos verta žinoti.

Kodėl wildcard sertifikatai yra kitoniški

Skirtingai nei įprastus Let’s Encrypt sertifikatus, wildcard sertifikatus galima gauti tik naudojant DNS-01 iššūkio metodą. Tai reiškia, kad negalėsite tiesiog paleisti certbot --apache ar certbot --nginx ir tikėtis, kad viskas veiks automatiškai.

DNS-01 metodas reikalauja, kad patvirtintumėte domeno valdymą pridėdami specialų TXT įrašą prie savo DNS zonos. Tai šiek tiek sudėtingiau nei HTTP-01 metodas, kuris tiesiog patikrina, ar galite patalpinti failą svetainės kataloge, bet kartu suteikia daugiau lankstumo.

Kodėl Let’s Encrypt nusprendė taip padaryti? Saugumo sumetimais. Wildcard sertifikatas yra galingas įrankis – jis veikia visiems subdomenams, įskaitant tuos, kurie dar neegzistuoja. Todėl reikia griežtesnės patikros, kad įsitikintų, jog tikrai valdote visą domeną, o ne tik vieną konkretų subdomeną.

Kaip tai veikia praktiškai su Certbot

Certbot yra populiariausias Let’s Encrypt klientas, ir jis puikiai palaiko wildcard sertifikatus. Tačiau jums reikės naudoti DNS pluginą, kuris atitinka jūsų DNS tiekėją. Yra pluginų Cloudflare, Route53, Google Cloud DNS, DigitalOcean ir daugeliui kitų.

Štai kaip atrodo tipiškas procesas su Cloudflare:

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/cloudflare.ini -d example.com -d *.example.com

Atkreipkite dėmesį, kad paprastai norite įtraukti ir pagrindinį domeną (example.com), ir wildcard (*.example.com), nes wildcard sertifikatas neapima pagrindinio domeno. Tai dažna klaida, dėl kurios žmonės vėliau stebi, kodėl example.com neveikia su HTTPS.

Prieš paleisdami šią komandą, turite sukonfigūruoti API kredencialus. Cloudflare atveju tai atrodo maždaug taip:

dns_cloudflare_api_token = jūsų_api_token_čia

Šį failą būtinai apsaugokite tinkamomis teisėmis:

chmod 600 ~/.secrets/cloudflare.ini

Automatinis atnaujinimas ir galimos problemos

Vienas iš Let’s Encrypt privalumų yra tai, kad Certbot gali automatiškai atnaujinti sertifikatus. Tačiau su wildcard sertifikatais tai veikia tik tada, kai jūsų DNS pluginas tinkamai sukonfigūruotas ir turi nuolatinę prieigą prie DNS API.

Kai kurie DNS tiekėjai turi API token’us su galiojimo laikotarpiu, kiti – ne. Jei jūsų token’as nustos veikti, automatinis atnaujinimas nepavyks, ir vieną gražią dieną jūsų svetainė pradės rodyti saugumo įspėjimus. Todėl būtinai nustatykite stebėjimą arba bent jau el. pašto pranešimus apie sertifikatų galiojimo pabaigą.

Certbot paprastai sukuria cron arba systemd timer’į automatiniam atnaujinimui. Galite patikrinti, ar viskas veikia, rankiniu būdu paleisdami:

sudo certbot renew --dry-run

Ši komanda simuliuoja atnaujinimo procesą nekeisdama nieko realiame. Jei matote klaidas, geriau jas išspręsti dabar, o ne laukti, kol sertifikatas baigs galioti.

Alternatyvos Certbot ir kiti įrankiai

Nors Certbot yra populiariausias pasirinkimas, jis tikrai nėra vienintelis. Jei dirbate su konteineriais ar Kubernetes, galite apsvarstyti cert-manager, kuris puikiai integruojasi su Kubernetes ekosistema ir gali automatiškai valdyti wildcard sertifikatus.

Kitas įdomus variantas – acme.sh, lengvesnis ir greitesnis bash skriptas, palaikantis dar daugiau DNS tiekėjų nei Certbot. Jis ypač populiarus tarp tų, kurie vertina minimalizmą ir nenori diegti Python priklausomybių.

Pavyzdys su acme.sh:

acme.sh --issue --dns dns_cf -d example.com -d *.example.com

Jei naudojate Cloudflare, galite apsvarstyti ir jų pačių Origin Certificate funkciją, kuri leidžia generuoti sertifikatus tiesiogiai Cloudflare sąsajoje. Tačiau šie sertifikatai veikia tik su Cloudflare proxy ir nėra viešai patikimi – jie skirti tik šifruoti ryšį tarp Cloudflare ir jūsų serverio.

DNS API ir saugumo aspektai

Kai suteikiate Certbot prieigą prie DNS API, iš esmės duodate jam galimybę keisti jūsų DNS įrašus. Tai rimta privilegija, kurią reikia atsakingai valdyti. Štai keletas patarimų:

Pirmiausia, jei jūsų DNS tiekėjas leidžia kurti API token’us su ribotomis teisėmis, būtinai tuo pasinaudokite. Pavyzdžiui, Cloudflare leidžia sukurti token’ą, kuris gali redaguoti tik TXT įrašus tik konkrečioje zonoje. Tai daug saugiau nei naudoti globalų API raktą.

Antra, saugokite kredencialų failus. Jie neturėtų būti skaitomi kitiems sistemos vartotojams. Jei naudojate version control sistemą (Git), įsitikinkite, kad šie failai yra .gitignore sąraše.

Trečia, reguliariai peržiūrėkite ir rotacijos API token’us. Net jei nieko blogo neįvyko, gera praktika kas kelis mėnesius atnaujinti kredencialus.

Kada wildcard sertifikatas nėra geriausias pasirinkimas

Nors wildcard sertifikatai atrodo kaip universalus sprendimas, jie ne visada yra optimalus pasirinkimas. Yra keletas situacijų, kai geriau naudoti atskirus sertifikatus.

Jei turite tik kelis subdomenus, kurie retai keičiasi, paprastas multi-domain sertifikatas gali būti paprastesnis sprendimas. Jis nereikalauja DNS API prieigos ir gali būti atnaujinamas naudojant paprastesnį HTTP-01 metodą.

Wildcard sertifikatai neveikia keliems lygiams. Pavyzdžiui, *.example.com veiks blog.example.com, bet neveiks admin.blog.example.com. Jei jums reikia apsaugoti antro lygio subdomenus, turėsite išduoti atskirą wildcard sertifikatą *.blog.example.com.

Be to, jei skirtingus subdomenus valdo skirtingi žmonės ar komandos, wildcard sertifikatas gali būti per daug centralizuotas. Kiekviena komanda turės prieigą prie to paties privataus rakto, o tai gali būti saugumo rizika.

Praktiniai patarimai iš realaus gyvenimo

Dirbant su wildcard sertifikatais ilgesnį laiką, susiduriate su įvairiomis smulkmenomis, kurios nėra aprašytos oficialioje dokumentacijoje. Štai keletas dalykų, kuriuos išmokau sunkiu būdu.

DNS propagacija gali užtrukti. Nors daugelis DNS tiekėjų skelbia beveik akimirksnius atnaujinimus, realybėje kartais tenka palaukti kelias minutes. Jei Certbot skundžiasi, kad negali rasti TXT įrašo, nepulkite iš karto ieškoti klaidų – tiesiog palaukite minutę ir bandykite dar kartą.

Jei naudojate load balancer’į ar reverse proxy, įsitikinkite, kad sertifikatas yra teisingoje vietoje. Kartais žmonės sėkmingai gauna sertifikatą serveryje, bet pamiršta jį nukopijuoti į load balancer’į, ir vėliau stebi, kodėl HTTPS neveikia.

Kai turite kelis serverius, sertifikatų sinchronizavimas gali tapti problema. Galite naudoti centralizuotą sertifikatų valdymą arba bent jau užtikrinti, kad visi serveriai naudoja tą patį sertifikatą iš bendros saugyklos.

Kai viskas susideda į vieną paveikslą

Wildcard sertifikatai iš Let’s Encrypt yra puikus įrankis, kuris gali sutaupyti daug laiko ir pastangų, ypač jei valdote dinamišką infrastruktūrą su daugybe subdomenų. Taip, pradinis nustatymas reikalauja šiek tiek daugiau darbo nei paprastas HTTP-01 metodas, bet kai viskas sukonfigūruota, sistema veikia sklandžiai ir automatiškai.

Svarbiausias dalykas – tinkamai sukonfigūruoti DNS API prieigą ir užtikrinti, kad automatinis atnaujinimas veikia patikimai. Nustatykite stebėjimą, reguliariai testuokite atnaujinimo procesą ir laikykitės saugumo geriausios praktikos su API kredencialais.

Nepamirškite, kad wildcard sertifikatai nėra universalus sprendimas visoms situacijoms. Įvertinkite savo konkrečius poreikius – kartais paprastas sprendimas su atskirais sertifikatais gali būti tinkamesnis. Bet kai jums tikrai reikia apsaugoti daugybę subdomenų, wildcard sertifikatai yra tas įrankis, kuris padės išlaikyti viską tvarkingai ir saugiai be papildomo biudžeto SSL sertifikatams.

Daugiau

Ark UI: framework agnostic komponentai