Op 30 september om 17:01 Moskou-tijd vervalt de levensduur van het rootcertificaat van het bedrijf IdenTrust (DST Root CA X3), dat werd gebruikt voor cross-signing van het rootcertificaat van de certificeringsinstantie Let’s Encrypt (ISRG Root X1), dat door de gemeenschap wordt beheerd en certificaten kosteloos aanbiedt aan iedereen die dat wil. De cross-handtekening bood vertrouwen in de certificaten van Let’s Encrypt op een breed scala van apparaten, besturingssystemen en browsers tijdens de integratie van het eigen rootcertificaat van Let’s Encrypt in de rootcertificaatopslag.
Aanvankelijk was het de bedoeling dat Let’s Encrypt, na de veroudering van DST Root CA X3, zou overschakelen op het genereren van handtekeningen met alleen zijn eigen rootcertificaat, maar zo'n stap zou leiden tot verlies van compatibiliteit met een groot aantal oude systemen die het rootcertificaat van Let’s Encrypt niet hadden toegevoegd aan hun opslag. Bijna 30% van de gangbare Android-apparaten heeft bijvoorbeeld geen gegevens over het rootcertificaat van Let’s Encrypt, waarvan de ondersteuning pas begon met de Android 7.1.1-platform, dat eind 2016 werd uitgebracht.
Let’s Encrypt had niet de bedoeling om een nieuw cross-signing akkoord te sluiten, omdat dit extra verantwoordelijkheden met zich meebrengt voor de deelnemers aan de overeenkomst, autonomie wegneemt en beperkingen oplegt qua naleving van de procedures en regels van een andere certificeringsinstantie. Maar vanwege de opkomst van potentiële problemen op een groot aantal Android-apparaten is het plan herzien. Er is een nieuwe overeenkomst gesloten met de certificeringsinstantie IdenTrust, waardoor een alternatief cross-ondertekend tussenliggende certificaat van Let’s Encrypt is gecreëerd. De cross-handtekening zal drie jaar geldig zijn en zal ondersteuning bieden voor Android-apparaten, te beginnen vanaf versie 2.3.6.
Toch dekt het nieuwe intermediaire certificaat veel andere verouderde systemen niet. Bijvoorbeeld, nadat het certificaat DST Root CA X3 zijn vervaldatum heeft bereikt op 30 september, zullen certificaten van Let’s Encrypt niet langer worden herkend in verouderde firmware en besturingssystemen, waar voor het waarborgen van het vertrouwen in Let’s Encrypt-certificaten handmatige toevoeging van het certificaat ISRG Root X1 aan de opslag voor rootcertificaten vereist is. Problemen zullen zich manifesteren in:
- OpenSSL tot en met versie 1.0.2 (ondersteuning voor versie 1.0.2 is beëindigd in december 2019);
- NSS < 3.26;
- Java 8 < 8u141, Java 7 < 7u151;
- Windows < XP SP3;
- macOS < 10.12.1;
- iOS < 10 (iPhone < 5);
- Android < 2.3.6;
- Mozilla Firefox < 50;
- Ubuntu < 16.04;
- Debian < 8.
In het geval van OpenSSL 1.0.2 wordt het probleem veroorzaakt door een fout die het correct verwerken van cross-gecertificeerde certificaten verhindert wanneer een van de rootcertificaten die bij de ondertekening is betrokken, veroudert, zelfs als andere geldige vertrouwensketens behouden blijven. Het probleem deed zich voor het eerst voor vorig jaar na de veroudering van het certificaat AddTrust, dat werd gebruikt voor cross-ondertekening in de certificaten van de certificeringsinstantie Sectigo (Comodo). Het probleem is dat OpenSSL het certificaat als een lineaire keten interpreteerde, terwijl volgens RFC 4158 het certificaat een gerichte gedistribueerde cyclische grafiek kan vertegenwoordigen met meerdere vertrouwensankers die in overweging moeten worden genomen.
Voor gebruikers van oude distributies die afhankelijk zijn van OpenSSL 1.0.2 worden drie alternatieve oplossingen voorgesteld:
- Verwijder handmatig het rootcertificaat IdenTrust DST Root CA X3 en installeer het afzonderlijke (niet cross-gecertificeerde) rootcertificaat ISRG Root X1.
- Bij het uitvoeren van de commando's openssl verify en s_client kan de optie "--trusted_first" worden opgegeven.
- Gebruik op de server een certificaat dat is gecertificeerd door het afzonderlijke rootcertificaat SRG Root X1, dat geen cross-ondertekening heeft. Deze methode zal leiden tot verlies van compatibiliteit met oudere Android-clients.
Daarnaast kan worden opgemerkt dat het project Let’s Encrypt de grens van twee miljard gegenereerde certificaten heeft overschreden. De grens van één miljard werd in februari van vorig jaar bereikt. Elke dag worden er 2,2-2,4 miljoen nieuwe certificaten gegenereerd. Het aantal actieve certificaten bedraagt 192 miljoen (het certificaat is drie maanden geldig) en bestrijkt ongeveer 260 miljoen. domeinen (een jaar geleden waren er 195 miljoen domeinen, twee jaar geleden waren dat er 150 miljoen, drie jaar geleden 60 miljoen). Volgens statistieken van de Firefox Telemetry-service bedraagt het wereldwijde percentage pagina-aanvragen via HTTPS 82% (een jaar geleden was dat 81%, twee jaar geleden 77%, drie jaar geleden 69%, vier jaar geleden 58%).
Bron: opennet.ru
