Jak łatwo naprawić błąd „SSL Handshake Failed”

TL;DR: Błąd „SSL Handshake Failed" pojawia się, gdy przeglądarka i serwer nie mogą uzgodnić ustawień bezpieczeństwa potrzebnych do nawiązania szyfrowanego połączenia. Najczęstsze przyczyny to wygasły certyfikat SSL, nieprawidłowy zegar urządzenia, nieaktualna przeglądarka lub niezgodność wersji protokołu TLS. Jeśli błąd pojawia się na wszystkich witrynach HTTPS, zacznij od rozwiązania 1 (data i godzina). Jeśli dotyczy tylko jednej witryny, zacznij od rozwiązania 2 (sprawdzenie certyfikatu).

Najczęstsze przyczyny błędu „SSL Handshake Failed"

Handshake SSL/TLS to krótka negocjacja, która odbywa się przed każdym połączeniem HTTPS. Twoja przeglądarka i serwer muszą uzgodnić wersję protokołu, zestaw szyfrów oraz ważność certyfikatu serwera. Gdy którakolwiek część tej negocjacji zawiedzie, nie można nawiązać połączenia. Najczęstsze przyczyny to:

  • Nieprawidłowe ustawienia daty i godziny: certyfikaty SSL są ważne tylko w określonym przedziale czasu. Jeśli zegar urządzenia jest błędny nawet o kilka godzin, przeglądarka traktuje certyfikat jako wygasły lub jeszcze nieważny, nawet jeśli sam certyfikat jest prawidłowy.
  • Nieaktualna przeglądarka: przeglądarki, które nie obsługują nowoczesnych wersji TLS ani zestawów szyfrów, nie mogą połączyć się z serwerami, które ich wymagają. Rozszerzenia przeglądarki przechwytujące ruch mogą powodować ten sam skutek.
  • Wygasły lub niezgodny certyfikat SSL: certyfikat, który przekroczył datę ważności, lub wystawiony dla niewłaściwej domeny, natychmiast powoduje niepowodzenie handshake.
  • Niezgodność wersji protokołu: klient i serwer muszą uzgodnić wersję TLS. Serwery nadal działające na TLS 1.0 lub 1.1 są odrzucane przez wszystkie obecne przeglądarki, które wymagają co najmniej TLS 1.2. Na podstawie zgłoszeń do pomocy technicznej WP STAGING nieaktualne konfiguracje TLS serwera należą do najczęstszych przyczyn po stronie serwera, z jakimi się spotykamy.
  • Niezgodność zestawu szyfrów: nawet gdy wersje TLS są zgodne, serwer musi oferować co najmniej jeden zestaw szyfrów akceptowany przez przeglądarkę. Starsze serwery z krótką lub przestarzałą listą szyfrów często napotykają tę barierę bez żadnego wyraźnego błędu po stronie serwera.
  • Zakłócenia ze strony zapory lub antywirusa: niektóre oprogramowanie zabezpieczające przechwytuje połączenia HTTPS i ponownie podpisuje je własnym certyfikatem. Jeśli przeglądarka nie ufa temu certyfikatowi lub jeśli proces inspekcji usuwa zestawy szyfrów, handshake się nie powiedzie.

Jak zdiagnozować problem

Dopasowanie objawu do najbardziej prawdopodobnej przyczyny przed zastosowaniem rozwiązań pozwala zaoszczędzić sporo czasu:

Objaw Najbardziej prawdopodobna przyczyna Pierwsze rozwiązanie
Błąd na wszystkich witrynach HTTPS Błędny zegar urządzenia lub nieaktualna przeglądarka Rozwiązanie 1 (data/godzina) lub rozwiązanie 3 (aktualizacja przeglądarki)
Błąd tylko na jednej konkretnej witrynie Wygasły lub źle skonfigurowany certyfikat na tym serwerze Rozwiązanie 2 (sprawdzenie certyfikatu)
Błąd pojawił się po zainstalowaniu rozszerzenia przeglądarki Rozszerzenie przechwytujące ruch SSL Rozwiązanie 5 (wyłączenie rozszerzeń)
Błąd tylko w jednej przeglądarce, nie w innych Ustawienie TLS przeglądarki lub nieaktualna wersja Rozwiązanie 3 (aktualizacja przeglądarki)
Błąd po przeniesieniu WordPressa na HTTPS WordPress nie w pełni skonfigurowany dla HTTPS Rozwiązania dla WordPressa poniżej
Odwiedzający zgłaszają błąd na Twojej witrynie Problem z TLS lub certyfikatem po stronie serwera Uruchom test serwera SSL

W przypadku problemów po stronie serwera test serwera Qualys SSL Labs skanuje Twoją domenę za darmo, ocenia konfigurację TLS i wypisuje każdy wykryty problem z certyfikatem i szyframi. W naszych testach z WP STAGING uruchomienie tego testu to najszybszy sposób na potwierdzenie, czy problem leży po stronie serwera, czy klienta.

5 najprostszych sposobów naprawy błędu „SSL Handshake Failed"

  1. Sprawdź ustawienia daty i godziny
  2. Zweryfikuj, czy certyfikat SSL jest nadal ważny
  3. Zaktualizuj przeglądarkę
  4. Sprawdź obsługę protokołów TLS/SSL
  5. Wyłącz rozszerzenia przeglądarki

1. Sprawdź ustawienia daty i godziny

Błąd „SSL Handshake Failed" często wynika z nieprawidłowych ustawień daty i godziny na urządzeniu. Certyfikaty SSL polegają na dokładnym czasie, więc błędny zegar może zerwać bezpieczne połączenie. Oto jak to naprawić:

Kliknij prawym przyciskiem myszy na godzinie i dacie na pasku zadań i wybierz „Dostosuj datę/godzinę".

Dostosuj datę i godzinę, aby naprawić błąd „SSL Handshake Failed”

Włącz tę funkcję, aby system Windows automatycznie ustawiał czas na podstawie strefy czasowej. Aby zsynchronizować ręcznie, kliknij „Synchronizuj teraz" w sekcji „Synchronizuj zegar".

Włącz automatyczne ustawianie czasu, aby naprawić błąd „SSL Handshake Failed”

2. Zweryfikuj, czy certyfikat SSL jest nadal ważny

Wygasły lub nieprawidłowy certyfikat SSL to bezpośrednia przyczyna błędu „SSL Handshake Failed". Aby zapewnić prawidłowy handshake, upewnij się, że certyfikat jest ważny i zainstalowany dla właściwej domeny. Oto jak to sprawdzić:

Przejdź do problematycznej witryny w dowolnej przeglądarce, kliknij ikonę informacji o witrynie w pasku adresu i wybierz „Połączenie jest bezpieczne".

Opcja „Połączenie jest bezpieczne” w Google Chrome

Następnie kliknij „Certyfikat jest prawidłowy".

Sprawdź datę ważności certyfikatu, aby naprawić błąd „SSL Handshake Failed”

W Podglądzie certyfikatu znajdź sekcję „Okres ważności" i sprawdź datę wygaśnięcia.

Sprawdź okres ważności SSL, aby naprawić błąd „SSL Handshake Failed”

Jeśli certyfikat wygasł, odnów go u swojego dostawcy certyfikatów SSL. Jeśli nazwa domeny w certyfikacie nie odpowiada adresowi URL Twojej witryny, certyfikat trzeba wystawić ponownie dla właściwej domeny.

3. Zaktualizuj przeglądarkę

Nieaktualna przeglądarka może nie obsługiwać obecnych wersji TLS ani zestawów szyfrów, co powoduje niepowodzenia handshake na serwerach, które wycofały starsze protokoły. Otwórz ustawienia przeglądarki, znajdź opcję aktualizacji, zainstaluj dostępne aktualizacje, a następnie uruchom przeglądarkę ponownie.

Sprawdź aktualizacje, aby naprawić błąd „SSL Handshake Failed”.

Zaobserwowaliśmy, że to rozwiązanie usuwa błąd w przypadkach, gdy serwer niedawno podniósł minimalny wymóg TLS, a przeglądarka klienta nie została zaktualizowana, aby mu sprostać.

4. Sprawdź obsługę protokołów TLS/SSL

Błąd „SSL Handshake Failed" może wystąpić, jeśli przeglądarka lub serwer jest skonfigurowany dla niezgodnej wersji TLS. TLS 1.2 i TLS 1.3 to obecne standardy, a większość nowoczesnych przeglądarek obsługuje je automatycznie.

Jeśli używasz starszej wersji Firefoksa, wpisz about:config w pasku adresu, wyszukaj security.tls.version.min i potwierdź, że wartość wynosi 3 (odpowiada to TLS 1.2).

Sprawdź obsługę protokołów TLS/SSL, aby naprawić błąd „SSL Handshake Failed”.

Jeśli zarządzasz własnym serwerem, sprawdź, czy TLS 1.2 i 1.3 są włączone w ustawieniach SSL/TLS panelu sterowania hostingu, a TLS 1.0 i 1.1 są wyłączone. W razie wątpliwości poproś dostawcę hostingu.

5. Wyłącz rozszerzenia przeglądarki

Rozszerzenia przeglądarki obsługujące bezpieczeństwo lub prywatność mogą zakłócać połączenia SSL, przechwytując lub modyfikując zaszyfrowany ruch. Aby sprawdzić, czy przyczyną problemu jest rozszerzenie:

Przejdź do ustawień przeglądarki i otwórz sekcję rozszerzeń lub dodatków.

Znajdź rozszerzenia w swojej przeglądarce.

Tymczasowo wyłącz wszystkie rozszerzenia, przełączając je w stan wyłączony.

Wyłącz rozszerzenia, aby naprawić błąd „SSL Handshake Failed”.

Odwiedź problematyczną witrynę. Jeśli błąd zniknie, włączaj rozszerzenia pojedynczo, testując po każdym, aby zidentyfikować to powodujące konflikt. Rozszerzenia VPN i blokery reklam przeprowadzające inspekcję HTTPS to najczęstsi winowajcy.

Problemy z konfiguracją SSL po stronie serwera

Jeśli zarządzasz serwerem, a pięć rozwiązań po stronie klienta nie usunęło błędu, problem leży prawdopodobnie w konfiguracji TLS serwera. Najczęstsze przyczyny po stronie serwera:

Obsługa nieaktualnej wersji TLS. Serwery skonfigurowane do akceptowania tylko TLS 1.0 lub 1.1 zostaną odrzucone przez wszystkie obecne przeglądarki. W Apache włącz nowoczesne protokoły za pomocą SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1. W Nginx użyj ssl_protocols TLSv1.2 TLSv1.3;. Większość paneli sterowania hostingu zarządzanego ma dla tego graficzny przełącznik w sekcji SSL/TLS.

Słabe lub niezgodne zestawy szyfrów. Jeśli serwer oferuje tylko przestarzałe zestawy szyfrów (RC4, 3DES, szyfry klasy eksportowej), przeglądarka odrzuca całą listę i handshake kończy się niepowodzeniem bez wyraźnego błędu. Zaktualizuj konfigurację zestawów szyfrów serwera, aby priorytet miały obecne zestawy AEAD. Uruchomienie testu Qualys SSL Labs na Twojej domenie daje konkretną listę tego, co serwer obecnie oferuje, oraz elementów do usunięcia.

Niekompletny łańcuch certyfikatów. Twój certyfikat SSL musi być serwowany ze wszystkimi certyfikatami pośrednimi we właściwej kolejności. Jeśli brakuje certyfikatów pośrednich, niektóre przeglądarki nie mogą zweryfikować certyfikatu i handshake się nie powiedzie. Większość dostawców certyfikatów udostępnia plik pakietu (bundle) zawierający pełny łańcuch; zainstaluj pakiet, a nie sam certyfikat końcowy.

Problemy z przekierowaniami po migracji. Jeśli niedawno przeniosłeś witrynę z HTTP na HTTPS, nieaktualna reguła przekierowania w .htaccess lub konfiguracji serwera może utworzyć pętlę, którą przeglądarka pokazuje jako błąd połączenia zamiast błędu przekierowania. Przejrzyj reguły przekierowań po każdej migracji na HTTPS.

Rozwiązania dla WordPressa na błąd „SSL Handshake Failed"

Gdy błąd pojawia się konkretnie na witrynie WordPress, poniższe kroki dotyczą najczęstszych przyczyn na poziomie WordPressa:

Wymuś HTTPS w pliku wp-config.php. Po zainstalowaniu certyfikatu SSL WordPress może nadal serwować panel administracyjny i stronę logowania przez HTTP. Dodaj te wiersze do pliku wp-config.php przed komentarzem /* That's all, stop editing! */:

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

Zaktualizuj też Ustawienia > Ogólne, aby zarówno Adres WordPress, jak i Adres witryny używały https://.

Rozwiąż problem mieszanej treści. Strona serwowana przez HTTPS, która ładuje obrazy, skrypty lub arkusze stylów przez HTTP, wywołuje ostrzeżenia przeglądarki mogące wyglądać jak błędy handshake. Użyj narzędzi deweloperskich przeglądarki (karta Sieć, filtr HTTP), aby znaleźć zasoby z mieszaną treścią, a następnie zmień ich adresy URL na HTTPS.

Tymczasowo dezaktywuj wtyczki zarządzające SSL. Wtyczki wymuszające przekierowania HTTPS mogą kolidować z konfiguracją SSL dostawcy hostingu. Dezaktywuj je pojedynczo i testuj po każdej.

Zaktualizuj adres URL witryny w bazie danych po migracji. Jeśli migrowałeś WordPressa za pomocą WP STAGING, a baza danych nadal zawiera stary adres HTTP, mogą wystąpić pętle przekierowań. Użyj WP-CLI, aby zaktualizować:

wp search-replace 'http://yoursite.com' 'https://yoursite.com' --skip-columns=guid

Z naszego doświadczenia z WP STAGING zapomniany http:// w bazie danych to jedno z najczęstszych źródeł błędów związanych z SSL zaraz po migracji.

Co zrobić, jeśli żadne z rozwiązań nie działa

Jeśli zastosowałeś wszystkie powyższe rozwiązania, a błąd nadal występuje, przejdź przez tę ścieżkę decyzyjną:

Błąd na serwerze, który kontrolujesz:

  1. Uruchom test serwera Qualys SSL Labs na swojej domenie i przejrzyj każdy oznaczony element w raporcie.
  2. Skontaktuj się z dostawcą hostingu, przekazując raport SSL Labs. Większość hostingów zarządzanych może rozwiązać problemy z konfiguracją TLS po swojej stronie, bez potrzeby dostępu do serwera z Twojej strony.
  3. Jeśli masz bezpośredni dostęp do serwera, przeszukaj dziennik błędów serwera WWW pod kątem wpisów SSL_do_handshake lub handshake failure. Wskazują one dokładną wersję protokołu lub zestaw szyfrów, których nie udało się wynegocjować.

Błąd na witrynie, której nie jesteś właścicielem:

  1. Spróbuj otworzyć witrynę w innej sieci, na przykład przełączając się z Wi-Fi na dane komórkowe lub wyłączając VPN. Firmowa zapora lub przechwytujący serwer proxy może usuwać lub podmieniać certyfikaty, powodując niepowodzenie handshake tylko po Twojej stronie.
  2. Wyczyść stan SSL przeglądarki. W Chrome: Ustawienia > Prywatność i bezpieczeństwo > Bezpieczeństwo > Zarządzaj certyfikatami > Wyczyść stan SSL.
  3. Jeśli błąd ogranicza się do Twojej sieci, skontaktuj się z administratorem sieci lub IT. Przyczyną jest prawdopodobnie serwer proxy lub zapora.
  4. Jeśli żadne z powyższych nie pomoże, właściciel witryny ma problem z konfiguracją po stronie serwera, który tylko on może rozwiązać. Przekazanie mu wersji przeglądarki, wersji systemu operacyjnego i pełnego komunikatu o błędzie daje wszystko, czego potrzebuje, aby odtworzyć problem.

Podsumowanie

Niepowodzenia handshake SSL mogą mieć wiele przyczyn: zegar urządzenia spóźniony o kilka minut, nieaktualną przeglądarkę, wygasły certyfikat lub serwer nieskonfigurowany zgodnie z obecnymi standardami TLS. Przejście przez tabelę diagnostyczną na górze tego przewodnika, a następnie stosowanie rozwiązań po kolei rozwiązuje większość przypadków bez konieczności kontaktowania się z kimkolwiek.

Zawsze utrzymuj kopie zapasowe, stosuj najlepsze praktyki bezpieczeństwa, aby uniknąć przerw, i utrzymuj swoją witrynę WordPress bezpieczną oraz dostępną.

Powiązane artykuły

Rene Hermenau

Autor: Rene Hermenau

O autorze: René Hermenau jest założycielem WP STAGING. Zajmuje się kopiami zapasowymi WordPressa, środowiskami stagingowymi, migracjami, obsługą baz danych oraz bezpiecznymi procesami wdrażania.