Kořenový certifikát končí a není to ničí chyba
Už jen pár dnů zbývá do konce platnosti kořenového certifikátu DST Root CA X3, který tu s námi byl 21 let. Není to ničí chyba, nikdo nic neudělal špatně, prostě každý certifikát má nějakou životnost a tomu kořenovému právě končí. Konečný čas je stanoven na 30. září 2021 na 16:01 středoevropského času.
Není to samozřejmě poprvé, je to docela běžná věc. Kořenové certifikáty jsou součástí software a společně s ním se aktualizují. Dávno před vypršením starého kořene autorita vystaví nový a ten se postupně s aktualizacemi dostane k uživatelům. Ti si v ideálním případě ničeho nevšimnou, protože na pozadí služba přejde na jiný řetězec důvěry, který končí novým a stále platným kořenem.
V tomto konkrétním případě je věc ale složitější ze dvou důvodů: Let's Encrypt se v posledních letech stal jednoznačně nejrozšířenější certifikační autoritou, která vystavila dvě miliardy certifikátů. Zároveň tu máme více zařízení se starým a neaktualizovaným systémem, která si se změnou certifikátu nijak sama neporadí.
Závislost na kořeni
Všechny certifikáty pohánějící HTTPS jsou vystaveny certifikačními autoritami, což jsou organizace, kterým věří jednotlivá klientská zařízení. V operačním systému je zabudována databáze, která obsahuje kořenové certifikáty. Tedy dokumenty s veřejným klíčem jednotlivých autorit. Pomocí těchto klíčů je možné ověřit, že se vám protistrana prokazuje platným koncovým certifikátem, který si nevystavila sama, ale byl jí po ověření vystaven právě jednou z autorit.
Když před šesti lety začínala autorita Let's Encrypt vystavovat své certifikáty, musela se opřít o již existující kořen. Dohodla se proto s letitou certifikační autoritou IdenTrust, která jí vystavila mezilehlý certifikát. To je vlastně způsob, jakým může autorita delegovat svou pravomoc na někoho dalšího.
Takový výchozí bod umožnil okamžitý start nové autority, která využila běžně rozšířeného kořene důvěry a mohla tak bez čekání začít vystavovat vlastní platné certifikáty. Organizace Internet Security Research Group (ISRG), která za projektem stojí, si samozřejmě uvědomovala, že podobná závislost není dlouhodobě udržitelná.
Proto už v roce 2016 vystavila vlastní kořenový certifikát, který se postupně začal šířit do jednotlivých úložišť. Poměrně rychle se například dostal do prohlížeče Firefox, který jej uživatelům přinesl už ve verzi 50 z konce roku 2016. Postupně se pak šířil napříč systémy a platformami.
Přechod do vlastního
V roce 2019 se začalo hovořit o tom, že Let's Encrypt začne vystavovat nové certifikáty založené na vlastním kořeni. Ten se jmenuje ISRG Root X1 a má platnost až do roku 2035. Ukázalo se ale, že řada zařízení nedostává aktualizace systému a (v té době) čtyři roky starý kořenový certifikát nezná. Taková zařízení by se dostala do stejného stavu jako s neplatným starým kořenovým certifikátem – prostě by se přerušil řetězec důvěry.
Proto byl přechod několikrát odložen. Jenže čas letí a konečný termín byl jasně stanoven už před jednadvaceti lety. Do konce září letošního roku bylo potřeba vše nějak vyřešit a poškodit přitom co nejméně uživatelů. Nakonec bylo rozhodnuto, že od 11. ledna 2021 se začnou vystavovat certifikáty na základě nového kořene, i když to mělo znamenat odříznutí asi třetiny uživatelů s Androidem.
Android totiž s aktuálním kořenem ISRG Root X1 přišel ve verzi 7.1.1, která je z prosince roku 2016. To je sice velmi dávno, stále jsou mezi námi ale mnozí uživatelé, kteří používají starší verzi systému. Původně to vypadalo, že ti budou prostě opuštěni, protože neexistuje žádné technické řešení, které by jim umožnilo použít platný řetězec důvěry. Starý kořen končí a ten nový v zařízeních není.
Nakonec se poměrně rychle ukázalo, že to nebude tak dramatické. Android totiž u kořenových certifikátů ve svém úložišti záměrně nekontroluje platnost. Křížově podepsaný mezilehlý certifikát tak může existovat dál a být založen na zastaralém kořeni. Správci systémů tak mají možnost si zvolit delší řetězec, ve kterém bude zapojen nový křížově podepsaný certifikát s platností na další tři roky.
Dochází tedy k paradoxní situaci, kdy bude mezilehlý certifikát podepsán už neplatným kořenem. Celé to ale bude pro Android důvěryhodné, protože ten bude záměrně přehlížet neplatnost. Problém byl ale jen odložen o tři roky, protože alternativní mezilehlý certifikát má platnost do 30. září roku 2024. Pak se problém se starými Androidy objeví znovu. Jen jich za těch dalších pár let bude snad méně.
Tento nečekaný obrat nakonec snížil dopad budoucí expirace a zajistil hladší přechod pro většinu uživatelů. Přesto se však jistě některé věci určitě rozbijí. Týká se to klientů, kteří správně vynucují konec platnosti kořenových certifikátů a zároveň už se jich mnoho let netýká softwarová aktualizace, která by přinesla i obnovu úložišť důvěry.
Kdo si musí dát pozor
Potíže zažijí služby, které staví na OpenSSL 1.0.2, což je verze vydaná v lednu roku 2015. Vývojáři vše dobře vysvětlují v podrobném článku, kde také navrhují možnost ručního zásahu, který umožní použití novějších certifikátů. Je potřeba v klientském úložišti ručně odstranit starý certifikát DST Root CA X3 a nahradit jej novějším ISRG Root X1 (ne tím křížově podepsaným mezilehlým!).
Let's Encrypt ve své dokumentaci uvádí seznam klientů, kteří důvěřují starému kořeni DST Root CA X3 a také klientům s novějším kořenem ISRG Root X1. Scott Helme oba seznamy prolnul a vznikl tak seznam takových klientů, kteří se rozbijí po vypršení starého certifikátu na konci září:
- OpenSSL <= 1.0.2
- Windows < XP SP3
- macOS < 10.12.1
- iOS < 10 (iPhone 5 je poslední model s iOS 10)
- Android < 7.1.1 (ale verze >= 2.3.6 budou fungovat s alternativní cestou)
- Mozilla Firefox < 50
- Ubuntu < 16.04
- Debian < 8
- Java 8 < 8u141
- Java 7 < 7u151
- NSS < 3.26
- Amazon FireOS (Silk Browser)
Stále existuje skupina platforem, u kterých není chování ověřeno.
- Cyanogen > v10
- Jolla Sailfish OS > v1.1.2.16
- Kindle > v3.4.1
- Blackberry >= 10.3.3
- PS4 s firmware >= 5.00
- IIS
Konkrétní dopady zářijové expirace závisejí na tom, jak moc jsou podobné verze na internetu rozšířené. U řady z nich bude ale možné doplnit ručně nový kořenový certifikát, takže budou nadále použitelné. Pokud některý z těchto systémů používáte, pohlídejte si jeho další funkčnost. Máte na to už jen pár dnů.