Otwiera się w nowej karcie
Nowość
Serwer SMS MCP: pozwól swojemu agentowi AI wysyłać SMS-y i wiadomości głosowe
Dowiedz się więcej

Błąd SSL 30 maja 2020

30 maja 2020 roku doświadczyliśmy rzadkiej sytuacji w infrastrukturze publicznego klucza internetu, gdy dwa z głównych certyfikatów wygasły jednocześnie, z których jeden został wystawiony przez inną certyfikację SSL. Teoretycznie nie jest to nic niezwykłego. Certyfikaty stale się wygasają (zazwyczaj w ciągu roku lub nawet w 90 dni, jeśli używasz usługi Let’s Encrypt), a certyfikaty certyfikatorów…

30 maja 2020 roku zaobserwowaliśmy niezwykłą sytuację w infrastrukturze publicznego klucza internetu: dwa z głównych certyfikatów wygasły jednocześnie, co oznaczało, że każda z certyfikujących jednostek SSL wygasła.

Zasadniczo nie jest to nic niezwykłego. Certyfikaty wygasają stale (zwykle w ciągu roku lub nawet w 90 dni, jeśli używasz usługi Let’s Encrypt), a certyfikaty organów certyfikacji wygasają po kilku latach. Jednak 30 maja wygasająca certyfikacja ujawniła podstawowy problem, który spowodował, że nasza API nie była dostępna dla niektórych naszych klientów.

30 maja, gdy wygasły certyfikaty wydane przez organy certyfikacji, otrzymaliśmy zgłoszenia od użytkowników, że wystąpił problem z certyfikatem naszego serwisu. To była niespodziewana wiadomość, ponieważ starannie sprawdzamy, czy nasze certyfikaty są aktualne i nie wygasnąją w najbliższej przyszłości. Szybka kontrola w przeglądarce potwierdziła również, że wszystko wydawało się normalne i że API działało poprawnie.

Przeglądając statystyki naszej infrastruktury, zauważyliśmy, że liczba wywołań API spadła, ale wcale nie była ona zbliżona do zeru, jak mogłoby się spodziewać w przypadku całkowitego awarii SSL. Gdy rzeczy nie działają w pełni, często łatwiej jest zauważyć, czego nie ma, niż w sytuacjach, gdy niektóre rzeczy działają, a inne nie.

Pełna analiza w końcu wykazała, że podobne problemy wystąpiły również w innych serwisach internetowych. Wkrótce udało nam się ustalić przyczynę: https://support.sectigo.com/articles/Knowledge/Sectigo-AddTrust-External-CA-Root-Expiring-May-30-2020

Źródło: https://support.sectigo.com/articles/Knowledge/Sectigo-AddTrust-External-CA-Root-Expiring-May-30-2020
  • Certyfikat naszej jednostki certyfikującej Sectigo RSA Organization Validation Secure Server CA był ważny.
  • W ścieżce 1 certyfikat root USERTrust RSA Certification Authority był ważny, a cały łańcuch był ważny.
  • W ramach etapu 2 certyfikat naszej głównej jednostki certyfikującej, USERTrust RSA Certification Authority, wygasł w dniu 30 maja o godzinie 10:48 UTC.
  • Certyfikat Root Certificate Authority AddTrust External CA Root, który krzyżowo podpisywał certyfikat firmy USERTrust RSA, wygasł w dniu 30 maja o godzinie 10:48 UTC.

Było to ciekawe zagadnienie. Istniał prawidłowy sposób dostępu do certyfikowanej przez USERTrust RSA Authority, a także nieaktualny sposób dostępu. Przeglądarka była w stanie znaleźć prawidłową sekwencję, ale certyfikator nie był w stanie jej znaleźć. Test przeprowadzony przez Quality SSL Labs wykazał, że system działał poprawnie, a konfiguracja certyfikatu była prawidłowa.

Nasz zespół rozpoczął drugą zmianę naszego publicznego certyfikatu i próbował przywrócić usługę dla pozostałych klientów; zaraz po wdrożeniu potwierdził im, że mogą ponownie ją uzyskać. Incydent w końcu się zakończył i usługa została ponownie dostępna dla wszystkich klientów. Ale dlaczego niektórzy z naszych klientów w ogóle stracili dostęp, skoro nawet skaner SSL stwierdza, że certyfikat jest ważny?

Certyfikat był rzeczywiście ważny, a cały łańcuch certyfikacji został dość prawidłowo wygenerowany przez certyfikację Comodo/Sectigo (rozpoczynanie ważności certyfikatu w weekend nie jest dobrym rozwiązaniem). To, czego nie przewidywano, to sposób, w jaki biblioteki klienta będą radzić sobie z tą sytuacją – przede wszystkim OpenSSL, który obsługuje zdecydowaną większość HTTPS na świecie. Podczas analizy incydentu natknęliśmy się na interesujący błąd OpenSSL z 2014 roku, który brzmi następująco:

Nie używaj wygasłych certyfikatów, jeśli to możliwe.
W przypadku wyszukiwania emitenta certyfikatu, jeśli aktualny kandydat wygasł, należy kontynuować wyszukiwanie. Wartość certyfikatu wygasłego zostanie zwrócona jedynie w przypadku braku ważnych certyfikatów.

Źródło: https://github.com/openssl/openssl/commit/0930251df814f3993bf2c598761e0c7c6d0d62a2

Oznacza to, że przed wdrożeniem tej zmiany program OpenSSL, każdorazowo, gdy wykryje w łańcuchu nieprawidłowe certyfikaty, uznaje je za nieprawidłowe i odmawia połączenia. Po wdrożeniu tej zmiany program OpenSSL pomija wygasły certyfikat i szuka dalej dodatkowych certyfikatów, które mogą potwierdzić jego ważność. Ta niewielka zmiana dostosowuje się do struktury łańcucha certyfikatów – jedna certyfikacja może być podpisana przez kilka certyfikujących organów, z których niektóre są nadal ważne, a inne już nie. Wszystko wygląda świetnie, dlaczego więc ma to konsekwencje?

Jeśli się poszerzymy, to ta zmiana w OpenSSL to jedynie część wersji 1.1.1, a nie część wersji 1.0.x. Oznacza to, że dotyczy to wszystkich wersji systemu Ubuntu 16.04 i starszych, Debian 9 i starszych, CentOS 7 i starszych lub RedHat 7 i starszych, ale wszystkie te wersje są nadal ogólnie wspierane, przynajmniej z punktu widzenia bezpieczeństwa.

Ale dlaczego przeglądarki poprawnie weryfikowały certyfikaty? Przeglądarki są dostarczane z własnymi bibliotekami SSL/TLS oraz własnymi metodami weryfikacji PKI. Chrome jest dostarczane z BoringSSL, a Firefox z NSS, niezależnie od bibliotek SSL/TLS wbudowanego systemu operacyjnego; nie ma on tego samego problemu i jest aktualizowany znacznie częściej.

A teraz wreszcie mamy pełny obraz tego, co się wydarzyło i dlaczego dotyczyły one jedynie implementacji bazy danych niektórych klientów oraz dlaczego niektóre systemy miały przestarzałe pliki certyfikatów, które wymagały znacznie starszego podstawowego certyfikatu.

Co dalej? Kontaktujemy się z dotkniętymi klientami i wyjaśniamy, co się stało. Poprawiamy nasze narzędzie do sprawdzania certyfikatów, aby sprawdzić procedury w całej łańcuchu, a nie tylko nasze własne certyfikaty.

FAQ

Czy niedostępność usługi była spowodowana problemami na serwerach LOX24?

Nie, usługa nadal działała, ale nie była dostępna dla starszych systemów.

Czego powinienem zrobić, aby w przyszłości nie powtórzyć podobnej sytuacji z LOX24 lub innymi usługami?

Aktualizuj OpenSSL do co najmniej wersji 1.1.1 i LibreSSL do co najmniej 3.2.0. Aktualizuj również swoje pliki certyfikatów, w systemie Linux często pod nazwą „ca-certificates“.

Czy certyfikat od firmy LOX24 wygasł?

Nie, certyfikat firmy LOX24 nie wygasł i nadal jest ważny. To, co wygasło, to jedna z trzech wersji certyfikatów CA wydanych przez certyfikujące organy, które zatwierdziły nasz certyfikat.

Czy dotyczyło to jakiegoś innego dostawcy lub czy problem dotyczył wyłącznie platformy LOX24?

Niestety, istniało również wiele innych dostawców, których to dotyczyło: Heroku, Stripe, kernel.org, Datadog, Gandi.net i wiele innych.

Kontynuuj czytanie

Wszystkie artykuły
SMS API
wrz 2024

Jak działa filtrowanie wiadomości SMS?

Funkcje filtrowania LOX24 pozwalają ograniczyć koszty i chronić się przed atakami i usterkami…

SMS API
cze 2024

Jak korzystać z Symfony SMS & Voice Notifications

Wykonaj poniższe kroki, aby wysyłać powiadomienia SMS i głosowe w Symfony. Integracja powiadomień SMS…

Interfejs SMS, SMS API, bramka SMS
sty 2024

Mail2SMS: bramka SMS po prostu przez e-mail

Dzięki Mail2SMS wysyłasz SMS-y bezpośrednio z poczty e-mail, bez konieczności posiadania wiedzy technicznej. Jedna…

2FA, interfejs SMS, SMS API
sty 2024

Wysyłka SMS z RSA Authentication Manager

LOX24 SMS można bezproblemowo zintegrować z RSA SecurID, wiodącą platformą do zarządzania tożsamością i dostępem…

SMS API, sms-gateway-en
sty 2024

Instrukcja: wysyłanie SMS-ów w PowerShell

Za pomocą PowerShell możesz wysyłać SMS-y. Wystarczy skorzystać z interfejsu SMS API od LOX24. W…

Interfejs SMS, SMS API
sty 2024

Instrukcja: wysyłanie SMS-ów w PowerShell

Za pomocą PowerShell możesz wysyłać SMS-y. Wystarczy skorzystać z interfejsu SMS API od…

Interfejs SMS, SMS API
gru 2023

Sekrety SMS-ów: jak zwiększyć sprzedaż

Wiadomości tekstowe to skuteczny sposób na dotarcie do klientów i zwiększenie sprzedaży.

SMS API
gru 2023

Jak zwiększyć sprzedaż dzięki SMS-om?

Zwiększ sprzedaż dzięki kampaniom SMS marketingowym, budowaniu lojalności klientów i przypominaniu o porzuconych koszykach.

2FA, MFA, interfejs SMS, SMS API
paź 2023

Auth0 SMS i Voice 2FA

Nasza integracja SMS pozwala używać LOX24 jako dostawcy MFA dla Auth0, dzięki czemu możesz wysyłać hasła jednorazowe…

Testuj za darmo!

Zarejestruj się już dziś i otrzymaj 50 centów bez żadnych zobowiązań na okres próbny — wraz z filtrami.