SSL_ERROR_RX_RECORD_TOO_LONG: co oznacza i jak go naprawić
W skrócie
Ten błąd Firefoksa zwykle oznacza, że serwer pod adresem https:// odpowiada zwykłym, nieszyfrowanym http, bo dla tej domeny nie włączono SSL. Właściciel strony naprawia to w panelu hostingu albo w konfiguracji serwera: włącza SSL i instaluje certyfikat. Jeśli to cudza strona, sprawdź ją w innej sieci, a potem daj znać właścicielowi.
Co pokazuje Firefox i co to znaczy
Firefox pokazuje stronę „Nie udało się nawiązać bezpiecznego połączenia” ze zdaniem „SSL otrzymał rekord przekraczający największą dozwoloną długość.”. Po kliknięciu „Zaawansowane” widać kod SSL_ERROR_RX_RECORD_TOO_LONG i prośbę o poinformowanie właściciela witryny. Tego ostrzeżenia nie da się ominąć.
Nazwa błędu brzmi technicznie, ale przyczyna jest zwykle prosta. Przy adresie https:// przeglądarka zaczyna szyfrowane połączenie na porcie 443, a serwer odpowiada zwykłym, nieszyfrowanym http. Firefox czyta pierwsze znaki tej odpowiedzi jak nagłówek zaszyfrowanego bloku danych (rekordu) i wychodzi mu blok dłuższy, niż pozwala protokół.
Chrome w tej samej sytuacji pokazuje „Ta witryna nie umożliwia bezpiecznego połączenia” z kodem ERR_SSL_PROTOCOL_ERROR, a Edge ten sam kod. Opisujemy to na stronie Błąd protokołu SSL.
Jeśli to cudza strona
- Sprawdź, czy w adresie nie ma numeru portu, np.
https://firma.pl:8080. Wpisz sam adres strony. - Otwórz stronę w innej sieci, np. w telefonie na danych komórkowych. Jeśli tam działa, a u Ciebie ten błąd pojawia się na wielu stronach, przyczyną bywa program antywirusowy, który sprawdza połączenia https, albo serwer proxy w sieci firmowej. Zaktualizuj program antywirusowy albo na chwilę wyłącz w nim sprawdzanie połączeń szyfrowanych; w firmie zapytaj dział IT.
- Jeśli strona nie działa w żadnej sieci, problem jest na serwerze i nie naprawisz go sam. Firefox radzi wtedy: „Proszę poinformować właścicieli witryny o tym problemie.”
Najczęstsze przyczyny na Twojej stronie
- Dla domeny nie włączono SSL. Strona działa przez http://, ale w ustawieniach domeny na hostingu SSL jest wyłączone albo do domeny nie przypisano certyfikatu.
- Błąd w konfiguracji własnego serwera. Serwer nasłuchuje na porcie 443, ale bez szyfrowania: w nginx brakuje słowa
sslw liniilisten 443, a w Apache brakuje liniiSSLEngine on, bloku<VirtualHost *:443>dla domeny albo włączonego modułu mod_ssl. - Link z numerem portu, pod którym działa zwykłe http, np.
https://firma.pl:8080.
Jak to naprawić na hostingu z panelem
- W panelu hostingu otwórz ustawienia domeny i włącz SSL. W DirectAdmin opcja nazywa się „Bezpieczny SSL”, w Plesk „Obsługa SSL/TLS”. W innych panelach szukaj włączenia SSL przy domenie.
- Zainstaluj certyfikat i przypisz go do domeny. Jeśli nie masz certyfikatu, wygeneruj go w generatorze dla wszystkich adresów strony, np.
firma.pl, www.firma.pl, i wgraj według instrukcji dla swojego hostingu. - Otwórz stronę przez https:// w oknie prywatnym. Jeśli zamiast tego błędu zobaczysz ostrzeżenie o certyfikacie wystawionym na inny adres, przejdź do poradnika SSL_ERROR_BAD_CERT_DOMAIN.
- Jeśli w panelu wszystko jest włączone, a błąd zostaje, napisz do pomocy technicznej hostingu: konfiguracja portu 443 jest wtedy po stronie serwera.
Jak to naprawić na własnym serwerze (nginx, Apache)
nginx: w bloku server dla domeny linia listen 443; bez słowa ssl uruchamia na porcie 443 zwykłe http. Poprawnie:
listen 443 ssl; ssl_certificate /etc/ssl/twojadomena/fullchain.pem; ssl_certificate_key /etc/ssl/twojadomena/privkey.pem;
Jeśli w bloku jest też linia listen [::]:443, ona również musi mieć słowo ssl. Sprawdź konfigurację poleceniem sudo nginx -t i przeładuj serwer: sudo systemctl reload nginx.
Apache: włącz moduł SSL (Debian i Ubuntu: sudo a2enmod ssl, potem sudo systemctl restart apache2; AlmaLinux i Rocky Linux: sudo dnf install mod_ssl). Domena musi mieć blok <VirtualHost *:443> z włączonym SSL, bo Apache domyślnie go nie włącza:
SSLEngine on SSLCertificateFile /etc/ssl/twojadomena/fullchain.pem SSLCertificateKeyFile /etc/ssl/twojadomena/privkey.pem
Sprawdź konfigurację: sudo apachectl configtest, potem przeładuj serwer: sudo systemctl reload apache2 (na AlmaLinux i Rocky Linux httpd). Całą instalację opisujemy w instrukcji dla serwera.
Na komputerze z terminalem sprawdzisz, co odpowiada serwer:
echo | openssl s_client -connect twojadomena.pl:443 \ -servername twojadomena.pl
Jeśli w odpowiedzi jest wrong version number, serwer na porcie 443 nadal odpowiada zwykłym http. Poprawnie skonfigurowany serwer pokazuje certyfikat i dane połączenia.