Wygaśnięcie certyfikatu głównego IdenTrust spowoduje utratę zaufania do Let's Encrypt na starszych urządzeniach

30 września o godzinie 17:01 czasu moskiewskiego certyfikat główny IdenTrust (DST Root CA X3), który został użyty do podpisania krzyżowego certyfikatu głównego urzędu certyfikacji Let's Encrypt (ISRG Root X1), kontrolowanego przez społeczność i udostępnia certyfikaty bezpłatnie każdemu, wygasa. Podpisywanie krzyżowe zapewniło zaufanie certyfikatom Let's Encrypt w szerokiej gamie urządzeń, systemów operacyjnych i przeglądarek, podczas gdy własny certyfikat główny Let's Encrypt został zintegrowany z głównymi magazynami certyfikatów.

Pierwotnie planowano, że po wycofaniu DST Root CA X3 projekt Let's Encrypt przejdzie na generowanie podpisów przy użyciu wyłącznie swojego certyfikatu głównego, ale takie posunięcie doprowadziłoby do utraty kompatybilności z dużą liczbą starszych systemów, które tego nie robiły dodaj certyfikat główny Let's Encrypt do swoich repozytoriów. W szczególności około 30% używanych urządzeń z Androidem nie posiada danych w certyfikacie głównym Let's Encrypt, którego wsparcie pojawiło się dopiero począwszy od platformy Android 7.1.1 wydanej pod koniec 2016 roku.

Let's Encrypt nie planowało zawarcia nowej umowy typu cross-signature, gdyż nakłada to na strony umowy dodatkową odpowiedzialność, pozbawia je niezależności i wiąże ręce w zakresie zgodności ze wszystkimi procedurami i zasadami innego urzędu certyfikacji. Jednak ze względu na potencjalne problemy na dużej liczbie urządzeń z Androidem plan został zmieniony. Zawarto nową umowę z urzędem certyfikacji IdenTrust, w ramach której stworzony został alternatywny certyfikat pośredni z podpisem krzyżowym Let's Encrypt. Podpis krzyżowy będzie ważny przez trzy lata i będzie zapewniał obsługę urządzeń z systemem Android począwszy od wersji 2.3.6.

Nowy certyfikat pośredni nie obejmuje jednak wielu innych starszych systemów. Na przykład, gdy 3 września certyfikat DST Root CA X30 utraci ważność, certyfikaty Let's Encrypt nie będą już akceptowane w nieobsługiwanym oprogramowaniu sprzętowym i systemach operacyjnych, które wymagają ręcznego dodania certyfikatu ISRG Root X1 do głównego magazynu certyfikatów, aby zapewnić zaufanie do certyfikatów Let's Encrypt . Problemy ujawnią się w:

  • OpenSSL do gałęzi 1.0.2 włącznie (utrzymanie gałęzi 1.0.2 zostało przerwane w grudniu 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;
  • Debiana < 8.

W przypadku OpenSSL 1.0.2 przyczyną problemu jest błąd, który uniemożliwia prawidłowe przetwarzanie certyfikatów z podpisem krzyżowym, jeśli jeden z certyfikatów głównych używanych do podpisywania wygaśnie, nawet jeśli pozostaną inne ważne łańcuchy zaufania. Problem pojawił się po raz pierwszy w zeszłym roku, gdy certyfikat AddTrust używany do podpisywania certyfikatów z urzędu certyfikacji Sectigo (Comodo) stał się przestarzały. Sedno problemu polega na tym, że OpenSSL analizował certyfikat jako łańcuch liniowy, podczas gdy zgodnie z RFC 4158 certyfikat może reprezentować ukierunkowany rozproszony wykres kołowy z wieloma kotwicami zaufania, które należy wziąć pod uwagę.

Użytkownikom starszych dystrybucji opartych na OpenSSL 1.0.2 oferowane są trzy obejścia problemu:

  • Ręcznie usunięto certyfikat główny IdenTrust DST Root CA X3 i zainstalowano samodzielny (niepodpisany krzyżowo) certyfikat główny ISRG Root X1.
  • Uruchamiając polecenia openssl Verify i s_client, możesz określić opcję „--trusted_first”.
  • Użyj na serwerze certyfikatu certyfikowanego odrębnym certyfikatem głównym SRG Root X1, który nie posiada podpisu krzyżowego. Ta metoda spowoduje utratę kompatybilności ze starszymi klientami Androida.

Dodatkowo możemy zauważyć, że projekt Let's Encrypt przekroczył kamień milowy w postaci dwóch miliardów wygenerowanych certyfikatów. W lutym ubiegłego roku osiągnięto próg miliarda. Dziennie generuje się 2.2-2.4 mln nowych certyfikatów. Liczba aktywnych certyfikatów wynosi 192 miliony (certyfikat jest ważny przez trzy miesiące) i obejmuje około 260 milionów domen (rok temu objętych było 195 milionów domen, dwa lata temu 150 milionów, trzy lata temu 60 milionów). Według statystyk usługi Firefox Telemetry globalny udział żądań stron poprzez HTTPS wynosi 82% (rok temu – 81%, dwa lata temu – 77%, trzy lata temu – 69%, cztery lata temu – 58%).

Źródło: opennet.ru

Dodaj komentarz