Z dávnych čias môžete vedieť, že mám rád HTTPS a rád s nim bojujem. Ako skoro všetci dnes využívam Let’s Encrypt certifikáty. Kedysi mi webserver bežal na Windowse, dávnejšie som mu však dedikoval vlastnú virtuálnu mašinu a tak si spokojne kraľuje na Linuxe, certifikáty rieši certbot a update sú hneď jednoduchšie.
Hlavnou nevýhodou Let’s Encryptu dlho bolo, že nepodporuje wildcard certifikáty. Čo bolo skutočne nahovno, napríklad ak ste mali nejakú testovaciu doménu ako ja (kubovpiesok.eu) a potrebovali ste novú subdoménu aj s certifikátom. Tak bol treba znova buď rozšíriť alebo spraviť čisto nový certifikát.. A hlavne, každý, kto si certifikát otvoril videl všetky vaše subdomény a.. to niekedy nechcete.
Dnes však uvidia iba toto. Ako je to možné a čo všetko pre to treba spraviť? Kúsok s vami pozdieľam dnešné nedeľňajšie poznatky:
Približne od marca 2018 je možné pomocou acmev2 serveru robiť aj wildcard certifikáty. Svet nie je taký pekný aby ste iba v certbote pacli hviezdičku a čakali generovanie wildcardu. Takto jednoducho to žiaľ nevymysleli.
Namiesto pôvodnej validácie cez http, ak chcete wildcard musí validácia prebehnúť cez DNS-01 challenge. V praxi to znamená, že je treba spustiť
certbot certonly --agree-tos --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d example.org,*.example.org
Vtedy tento chalan pochopí, že chcete DNS-01 challenge. Následne vám vypluje kód, ktorý treba dať do DNS TXT záznamu, cca nejak takto:
_acme-challenge.example.com. 3600 IN TXT "xxx".
Po zmadžgnutí ENTERu si Let’s Encrypt serveri overia tento záznam a vy máte wildcard certifikát na svete! Yeeej!
No.. Ale.. Ako ho budete obnovovať? .. Totižto táto atrakcia vyžaduje každotrojmesačnú obnovu a nakoľko sa magický kód, ktorý ste zadávali do DNS zakaždým mení máte iba dve možnosti: Buď si ich budete každé tri mesiace obnovovať alebo si to nejako zautomatizujete. Možnosť číslo dva, pokiaľ máte DNSko niekde u týchto, využijete plugin a máte vystarané! Ak však máte niečo iné, je ešte možnosť využiť štandard dns-rfc2136 alias, dynamické update DNSka. Vyzerá to strašne, teda.. hlavne to tak znie.. Hodnú chvíľu mi trvalo pochopiť čo je vlastne treba urobiť, pokiaľ máte ISC BIND(named) DNS server ako ja. Hlavne dopátrať sa k nejakým informáciám alebo návodu bolo na dobrých pár minút. Tento návod mi však pomohol najviac. V podstate to je jednoduché – Pomocou dnssec-keygen si vytvoríte kľúč, dáte ho do BIND konfigurácie a povolíte na jednotlivých doménach(zónach) dynamic update pomocou daného kľúča.
Následne už stačí vytvoriť pre certbota nainštalovať python3-certbot-dns-rfc2136, vytvoriť .ini config súbor a spustiť ho s odkazom naň!
A voilà! Máte autorenew wildcard certifikát!