Hlavní navigace

Let's Encrypt spouští podporu žolíkových certifikátů

Ondřej Caletka

Dlouho očekávaná funkce certifikační autority byla spuštěna 13. března. Pomocí nového standardizovaného API je možné získat i žolíkový certifikát. K ověření držení domény je však nutné použít DNS.

Doba čtení: 5 minut

Podporu wildcard neboli žolíkových certifikátů autorita Let's Encrypt slibuje od poloviny loňského roku. Tyto certifikáty jsou přes svá bezpečnostní rizika velmi oblíbené mezi administrátory. Ačkoli služba Let's Encrypt nabídla automatizaci výměny certifikátů a až stovku doménových jmen v jednom certifikátu, což dokáže na většině míst žolíkový certifikát nahradit, stejně byla jejich podpora jednou z nejpoptávanějších funkcí.

Spuštěno s přechodem na nové API

Podpora pro žolíkové certifikáty byla přidána jako jedna z funkcí nového rozhraní s protokolem ACME v2. To vychází z IETF standardu, který co nevidět vyjde jako RFC v kategorii Proposed Standard. I když za standardem stojí především lidé z okolí Let's Encrypt, během jeho vývoje byly do protokolu zavedeny změny, jejichž začlenění vyžaduje úpravu serveru i klienta. Proto bylo stávající rozhraní označené jako ACME v1 zmrazeno na sedmé verzi návrhu. Nové rozhraní ACME v2 je pak plně slučitelné s aktuálním návrhem, který už se do vydání RFC nebude měnit víc než stylisticky.

Protože změna API vyžaduje úpravu všech aktuálně používaných klientů, dá se očekávat, že nepůjde příliš hladce − uživatele k aktualizaci klienta donutí buď drastické řešení v podobě vypnutí starého API, nebo naopak přítomnost nějaké killer feature nového API. Takovou jsou právě žolíkové certifikáty.

Obě verze API teď poběží nějakou dobu současně, takže klienti, kteří žolíkové certifikáty nepotřebují, nemusí na své straně nic měnit. S největší pravděpodobností nedojde k vypnutí rozhraní ACME v1 dříve, než majorita klientů na nové API samovolně přejde v důsledku aktualizací softwaru.

Jak získat žolíkový certifikát

Postup získání žolíkového certifikátu je do velké míry totožný s postupem získání jiného typu certifikátu. Liší se jen tím, že doménové jméno v certifikátu má znaky *. na začátku. Hvězdička nahrazuje libovolný řetězec dané úrovně doménového jména, nikoli však víc úrovní doménového jména. Jinými slovy, část domény nahrazená hvězdičkou nesmí obsahovat tečky. Je však možné do jednoho certifikátu vložit i víc žolíkových jmen, je-li to zapotřebí. Certifikát tedy může obsahovat například takovouto sadu doménových jmen:

example.com
*.example.com
*.dev.example.com 

Let's Encrypt v současné době podporuje dva způsoby ověření držitele doménového jména – vystavením souboru na webserveru ( http-01) a vystavením TXT záznamu v DNS zóně ( dns-01). Pro vystavení žolíkového certifikátu je však nutné použít výhradně ověření v DNS. To může být komplikace, neboť spousta DNS hostingů nenabízí automatizovaný přístup k editaci DNS záznamů. Bez něj je nutné certifikáty obnovovat manuálně každé tři měsíce, což je zcela proti myšlence Let's Encrypt.

Podpora v acme.sh

Oficiální seznam klientů podporujících nové API se postupně rozrůstá. Jedním z prvních byl čínský klient acme.sh, který sice rozhodně není ukázkou čistého programátorského přístupu, ale zaujme minimálními závislostmi pouze na shellových utilitách a openssl, stejně jako podporou čtyřech desítek API DNS hosterů, což se pro žolíkové certifikáty obzvláště hodí.

Utilita si poradí i se situací, kdy DNS záznamy pro doménové jméno, pro které je potřeba získat certifikát, není možné nebo žádoucí spravovat automatizovaně. Režim zvaný DNS alias funguje tak, že subdomény _acme-challenge doménových jmen, pro které chceme získat certifikáty, trvale přesměrujeme pomocí CNAME záznamů do jiné, dynamicky spravované domény. Klient acme.sh při ověřování upravuje záznamy pouze v této vedlejší doméně, do které je autorita při ověřování přesměrována právě CNAME aliasem.

Vlastní získání žolíkového certifikátu je pak v podstatě jen aplikací běžného návodu. Jen je třeba dát pozor, že autorita Let's Encrypt neumožňuje použít žolík v předmětu certifikátu. Tedy první předávané doménové jméno nesmí hvězdičku obsahovat. Oprava: Jednalo se o omezení klienta ACME.sh, které už bylo odstraněno. Pro výše uvedený seznam domén může příkaz vypadat třeba takto (zpětné lomítko před hvězdičkami zabraňuje expanzi hvězdiček v shellu):

$ acme.sh --issue  -d example.com  --dns dns_cf  -d \*.example.com -d \*.dev.example.com 

Ověřování držení žolíkových jmen se provádí zcela stejně, jako by dané jméno sekvencí *. nezačínalo. V tomto případě tedy autorita bude ověřovat tyto dva TXT záznamy:

_acme-challenge.example.com.         IN  TXT  "…"
_acme-challenge.dev.example.com.     IN  TXT  "…" 

Stále chybí SCT

Kromě výše popsaných specifik se žolíkové certifikáty nijak neliší od jiných certifikátů Let's Encrypt. To mimo jiné znamená, že ačkoli autorita Let's Encrypt od prvního dne všechny své certifikáty zveřejňuje v Certificate Transparency, dodnes o tom v certifikátech chybí důkaz v podobě tzv. SCT rozšíření. Přitom už pro certitifkáty vydané od prvního dubna letošního roku bude zveřejnění v Certificate Transparency povinné v prohlížeči Google Chrome. Je tedy více než pravděpodobné, že do konce března nás ještě čeká změna vydávání certifikátů Let's Encrypt. Přidávání rozšíření do certifikátu sice není jediná možnost, ale všechny ostatní metody předávání důkazu o zalogování certifikátu vyžadují zásah administrátora a často i programátora.

Dobrý sluha, špatný pán

Žolíkové certifikáty jsou mezi administrátory velmi oblíbené, mnohem víc, než by si zasloužily. Obliba pramení zejména z dob, kdy certifikáty nebyly zdarma a jejích získání vyžadovalo určité množství manuální práce. Automatizace a snížení ceny za nulu účelnost použití žolíkových certifikátů výrazně zmenšila.

MIF18_Michálek

Proto, než si takový certifikát pořídíte, zamyslete se zejména nad tím, co všechno ztratíte, bude-li vám odcizen jeho privátní klíč. Revokace je totiž stále velký problém, takže útočník se žolíkovým certifikátem získá na poměrně dlouhou dobu možnost vystupovat pod kterýmkoli jménem, pro které žolík platí – a to i v případě, že server daného jména používá jiný typ certifikátu.

Použití žolíku by tedy mělo být vždy jen krajním řešením pro případy, kdy explicitní vyjmenovávání všech doménových jmen je silně nežádoucí, nebo dokonce nemožné. Víc než jinde se zde také hodí přidat do certifikátu volbu MustStaple, takže certifikát nebude platný, nebude-li doprovázen OCSP odpovědí. Jedině tak je zajištěna skutečně účinná možnost případné revokace certifikátu.

Našli jste v článku chybu?