Ján Fečík


osobná stránka · blog

Dátum: sobota, 27. apríla 2024
Čas: 06:30:55, 1714192255, @229
Meniny má: Jaroslav, Aristid
IP adresa: 18.224.0.25

Let's Encrypt na vlastnej mašine

To že tu je Let's Encrypt už nejaký ten piatok vie asi každý kto sa s certifikátmi niekedy v živote stretol. V skratke, Let's Encrypt je certifikačná autorita a ponúka za pomoci automatizovaného procesu tvorbu, overovanie, podpisovanie a obnovovanie DV (Domain Validated) certifikátov zadarmo. Cieľom celého projektu je aby bolo šifrované spojenie na internete považované za normálne a používal ho každý web na internete.

Život študenta na vysokej škole  ·  Stará klasika - Super Mario

Sám ho používam v práci a máme ho použitý na vyše 200 doménach. Keďže s ním často pracujem, tak som sa zamýšľal ako si to uľahčiť pri vytváraní nového certifikátu. Tak ma napadlo si spraviť zjednodušený príkaz, ktorý som si nazval cert a pri použitých parametroch vygeneruje certifikát pre „domena.tld“ a „www.domena.tld“, alebo ho viem doplniť o subdoménu/y. Celý proces vytvárania funguje cez HTTP kedy sa vygeneruje token na danej doméne pre kontrolu, že doména je skutočne moja a na základe úspešného overenia môže certbot pokračovať vo vydaní certifikátu.Let's Encrypt na vlastnej mašineNebavilo ma zakaždým nastavovať absolútnu cesta k doméne na mašine kde sa nachádza aby mohol certbot vytvoriť tento token na overenie domény. Po premýšľaní ma v hlave trklo, že by nebolo od veci skúsiť alias na nejaký adresár, ktorý by bol na všetkých doménach zdieľaný. Nastavil som si tento adresár do svojho cert skriptu a tým som si takto uľahčil generovanie a obnovovanie certifikátov. Svoj adresár som si nazval /cesta/k/adresaru/ a certifikát pre každú doménu odkazujem naňho.

certbot certonly --webroot -w /cesta/k/adresaru/ -d domena.tld -d www.domena.tld

Možno sa to dá spraviť aj lepšie, ale týmto som si to znechutenie pri vytváraní nových certifikátov trochu osladil a možno ma časom napadne ešte lepšie riešenie. Jedine čo som musel krkolomne prerobiť sú konfigurácie v certbote pre všetky už existujúce domény, aby ich certbot dokázal korektne obnoviť.Let's Encrypt na vlastnej mašineCertbot ponúka aj druhú možnosť na overenie domény a to za pomoci DNS, ale tam je problém v tom, že nemám prístup ku každej doméne a jej DNS záznamom. Takže touto možnosťou som sa nikdy nezapodieval, ale je to samozrejme lákavé, lebo takto sa dajú generovať wildcard certifikáty. Je škoda, že sa táto možnosť nedá zvoliť aj pri HTTP overovaní, bolo by takto o problém postarané.

Začal som sa ňou bližšie zaoberať keď som našiel uplatnenie pri subdoméne kde pripravujem ukážky pre klientov, ktorá má tvar „klient.subdomena.domena.tld“ a tam vytvárať zakaždým certifikát je zbytočnosť. Zapáčila sa mi teda táto myšlienka wildcard certifikátu, čo znamená, že by bol jeden globálny certifikát pre „*.subdomena.domena.tld“ a tým pádom nemusím nič viac riešiť. Kupovať platený wildcard certifikát kvôli takej blbosti mi príde samozrejme vyhadzovanie peňazí von z okna, preto ma zaujala táto možnosť a aspoň si rozšírim trochu obzory. Zatiaľ som si vyskúšal vytvoriť takýto wildcard certifikát manuálne a po pár pokusoch sa mi to aj podarilo.

certbot certonly --manual --preferred-challenges=dns -d *.subdomena.domena.tld

Pri tejto možnosti certbot požaduje vytvorenie DNS TXT záznamu a jeho následného overenia. Sem som sa zatiaľ dostal bez problémov, keďže to podľa mňa zvládne aj cvičená opica. Po dôkladnejšom štúdiu sa to ale dá aj zautomatizovať ak má človek prístup k doméne a jej DNS záznamov pomocou API, čo samozrejme mám. Vytvoriť DNS záznam cez API je malina, len si musím naštudovať ako to celé zautomatizovať, ak by mal ale niekto nejaký hint, tak mi pokojne napíšte.

Ak som správne pochopil, tak treba do parametru pre certbot pridať navyše --manual-auth-hook kde bude zadefinovaná cesta ku skriptu s ktorým si prečítam jeden a druhý token, vytvorím DNS TXT záznam aby ho certbot mohol overiť a na záver tieto dva DNS TXT záznamy odstránim. Aspoň teda predpokladám, že tomu tak je. tak snáď to nebude až tak zložité.

Možno tu niekto čakal nejaký postup na inštaláciu certbota, ale to si myslím zvládne každý.

Článok bol zobrazený 1410 krát a obsahuje 631 slov
Pridané 21. septembra 2022