Błąd PR_END_OF_FILE_ERROR w przeglądarce Firefox oznacza, że bezpieczne połączenie z serwerem zostało nagle przerwane, zanim program zdołał odczytać wszystkie dane weryfikujące certyfikat SSL. Najszybciej naprawisz go, wyłączając na chwilę oprogramowanie VPN lub antywirusa, a także tworząc całkowicie nowy profil użytkownika w ukrytych ustawieniach przeglądarki.
Siedziałem nad wdrożeniem nowej polityki bezpieczeństwa u nas w biurze na wrocławskich Krzykach we wtorek i nagle bez mała połowa stacji roboczych wypluła ten komunikat. Pół nocy w plecy. Maszyna po prostu odcina dostęp do sieci. Przeglądarka Mozilla Firefox jest wyjątkowo restrykcyjna pod kątem weryfikacji łańcuchów certyfikatów. Kiedy jakikolwiek zewnętrzny program – na przykład pakiet ochronny lub tunel proxy – próbuje wtrącić się w wymianę kluczy szyfrujących, Firefox natychmiast zrywa sesję. Bez negocjacji. To twardy mechanizm obronny przed atakami typu Man-in-the-Middle. Zjawisko to pojawia się wyłącznie w produktach opartych na silniku Gecko.
Dlaczego nagle widzę błąd PR_END_OF_FILE_ERROR na każdej stronie?
Winny jest zawsze pośrednik. Twój komputer i serwer docelowy próbują uścisnąć sobie dłonie za pomocą protokołu TLS. Serwer wysyła swój certyfikat. Przeglądarka zaczyna go czytać. Nagle strumień danych urywa się w połowie pliku. Stąd nazwa błędu odnosząca się bezpośrednio do nagłego końca pliku (End of File). Firefox nie dostaje pełnej paczki danych, więc zakłada najgorsze – ktoś podsłuchuje.
Prawda jest zresztą absolutnie taka, że w większości przypadków nikt nas nie atakuje. To nasze własne oprogramowanie strzela nam w kolano. Zmieniliśmy u nas na robocie filtry sieciowe i problem wyszedł od razu. Pakiety ochronne instalują własne certyfikaty główne w systemie operacyjnym Windows, żeby móc deszyfrować ruch HTTPS, skanować go pod kątem złośliwego kodu, a następnie szyfrować ponownie i podawać przeglądarce. Firefox ma własny, odizolowany magazyn certyfikatów. Nie ufa systemowemu magazynowi Windows z automatu. Kiedy antywirus podkłada swój certyfikat, Firefox widzi intruza i rzuca na ekran PR_END_OF_FILE_ERROR.
Skutkuje to całkowitą blokadą pracy. Zwykłe odświeżenie strony F5 nic nie daje. Musisz zlokalizować oprogramowanie, które modyfikuje pakiety sieciowe w locie.
Czy to wina mojego antywirusa i zаpory sieciowej?
Tak. Zdecydowanie najczęściej problem generuje moduł skanowania ruchu sieciowego w popularnych programach antywirusowych. Kaspersky, Avast, Bitdefender czy ESET posiadają funkcję o nazwie „Skanowanie HTTPS” lub „Ochrona w internecie”. W teorii ma to chronić przed pobraniem wirusa ze stron z kłódką. W praktyce niszczy to integralność protokołu TLS 1.3.
Żeby wykluczyć ten wektor, musisz brutalnie odciąć antywirusowi dostęp do analizy ruchu sieciowego. Nie musisz odinstalowywać całego pakietu. Wystarczy uciąć mu konkretną funkcję. Interfejsy tych programów są różne, ale zasada działania pozostaje identyczna. Szukasz w ustawieniach modułu webowego i odznaczasz inspekcję SSL/TLS.
- Wchodzisz w główne ustawienia swojego programu antywirusowego, odnajdujesz sekcję odpowiedzialną za ochronę sieci (często nazywaną Web Shield lub Ochrona WWW), a następnie wyłączasz całkowicie opcję skanowania połączeń szyfrowanych HTTPS. Zmiana ta wymusza na programie przepuszczanie surowego, zaszyfrowanego ruchu prosto do przeglądarki Firefox, co natychmiast eliminuje konflikt na poziomie weryfikacji certyfikatów i przywraca normalne ładowanie witryn. Wymaga to zazwyczaj restartu samej przeglądarki.
- Sprawdź, czy działa.
- Jeżeli maszyna nadal wyrzuca błąd, wejdź w ustawienia zapory sieciowej Windows Defender i upewnij się, że reguły wychodzące dla pliku firefox.exe nie są w żaden sposób modyfikowane przez zewnętrzne nakładki typu GlassWire czy ZoneAlarm, które potrafią ucinać pakiety na poziomie sterownika NDIS.
- Zrestartuj system operacyjny Windows.
To drastyczne cięcie problemu. Wiele osób myśli, że zostawia to komputer bez ochrony. Bzdura. Same przeglądarki mają obecnie wbudowane filtry (jak Google Safe Browsing używane też przez Mozillę), które blokują złośliwe domeny na poziomie DNS, zanim jakikolwiek plik zacznie się pobierać. Skanowanie HTTPS przez antywirusy to w dużej mierze relikt przeszłości, który obecnie generuje więcej awarii niż pożytku. Zastanawiacie się zresztą, dlaczego to wysypuje się akurat u was? Bo pakiety bezpieczeństwa aktualizują się w tle. Wczoraj działało. Dzisiaj wjechała nowa łatka do silnika Avasta i Firefox leży.
Jak oprogramowanie VPN i proxy psuje szyfrowanie?
Tunelowanie ruchu przez VPN to drugi główny winowajca. Błąd PR_END_OF_FILE_ERROR występuje, gdy klient VPN (np. NordVPN, ExpressVPN, Surfshark) źle negocjuje rozmiar jednostki transmisji, czyli MTU (Maximum Transmission Unit). Pakiet danych zaszyfrowany przez Firefoxa zostaje wrzucony do tunelu VPN. Tunel dokłada swój narzut szyfrowania (np. nagłówki WireGuard lub OpenVPN). Nagle pakiet staje się za duży dla lokalnego routera. Router go dzieli (fragmentacja). Firefox po drugiej stronie dostaje pofragmentowane śmieci i nie potrafi złożyć certyfikatu z powrotem.
Serwer zgłasza koniec pliku. Przeglądarka protestuje.
Wyłącz klienta VPN. Po prostu ubij proces. Sprawdź, czy strony zaczęły się ładować. Jeśli tak, masz twardy dowód. Problem nie leży w samej przeglądarce, ale w warstwie sieciowej systemu operacyjnego. Zamiast rezygnować z VPN-a, musisz zmienić protokół w jego ustawieniach. Przełącz się z UDP na TCP. Połączenie będzie minimalnie wolniejsze, bo TCP wymaga potwierdzania każdego przesłanego pakietu, ale za to całkowicie eliminuje problem gubienia fragmentów certyfikatów po drodze. U nas w biurze przejście z WireGuarda na sztywny protokół OpenVPN (TCP) na porcie 443 wyeliminowało ten błąd na wszystkich maszynach w przeciągu dziesięciu minut.
Z kolei serwery proxy działają na innej zasadzie. Często są konfigurowane na poziomie samej przeglądarki. Firefox może próbować łączyć się przez niedziałający lub źle skonfigurowany serwer proxy HTTP, który po prostu ucina połączenia po kilku milisekundach. Wejdź w opcje przeglądarki (about:preferences), zjedź na sam dół do sekcji „Ustawienia sieci” i wymuś opcję „Bez serwera proxy”. Nawet jeśli masz zaznaczone „Użyj systemowych ustawień serwera proxy”, Windows potrafi mieć w rejestrze zapisane stare śmieci po odinstalowanym oprogramowaniu reklamowym.
Co zrobić z uszkodzonym profilem przeglądarki Mozilla Firefox?
Czasami wina leży wewnątrz. Baza danych profilu ulega korupcji. Firefox przechowuje swoje certyfikaty w pliku `cert9.db` w folderze profilu użytkownika. Jeżeli nastąpił nagły zanik zasilania, błąd dysku SSD lub agresywne czyszczenie systemu programami typu CCleaner, plik ten może ulec trwałemu uszkodzeniu. Przeglądarka próbuje z niego czytać swoje klucze uwiarygadniające, trafia na uszkodzone sektory i wywala PR_END_OF_FILE_ERROR.
Nie ma sensu bawić się w ręczne usuwanie pojedynczych plików. Tworzysz nowy profil. To najbrutalniejsza, ale najskuteczniejsza metoda diagnozy.
- Wpisz w pasek adresu przeglądarki komendę `about:profiles` i naciśnij Enter.
- Kliknij przycisk „Utwórz nowy profil”, przejdź przez prosty kreator nadając mu dowolną nazwę, a następnie uruchom przeglądarkę w tym nowym, całkowicie czystym środowisku, które wygeneruje na nowo wszystkie pliki konfiguracyjne oraz bazy danych certyfikatów SSL od zera.
Odpal stronę, która wcześniej nie działała. Działa? Świetnie. Twój stary profil to śmietnik. Możesz użyć wbudowanej funkcji synchronizacji Firefox Sync, by przenieść zakładki i hasła do nowego profilu. Stary profil po prostu kasujesz. Trzymanie latami tego samego profilu, przenoszonego z komputera na komputer, to proszenie się o awarie. Bazy danych SQLite używane przez silnik Gecko puchną i z czasem ulegają fragmentacji wewnętrznej.
Czy zmiana ustawień DNS faktycznie pomaga?
DNS over HTTPS (DoH) to mechanizm, który Mozilla włączyła domyślnie. Zamiast pytać Twojego dostawcę internetu o adres IP serwera (np. onet.pl), Firefox wysyła zaszyfrowane zapytanie bezpośrednio do serwerów Cloudflare lub NextDNS. To świetne z punktu widzenia prywatności. Twój operator nie widzi, gdzie wchodzisz. Ale to jednocześnie generuje potężne konflikty w sieciach firmowych i domowych, gdzie routery mają własne reguły routingu.
Jeżeli Firefox używa DoH, a sieć lokalna próbuje to zapytanie przechwycić, połączenie weryfikacyjne zostaje zerwane. Wyrzuca błąd. Wyłączenie DoH to jeden z najczęstszych sposobów na pozbycie się komunikatu o końcu pliku.
Wchodzisz w ustawienia przeglądarki. Wpisujesz w wyszukiwarkę opcji słowo „DNS”. Zobaczysz sekcję „DNS przez HTTPS”. Zmień ustawienie z „Domyślna ochrona” lub „Zwiększona ochrona” na „Wyłączone”. Oznacza to, że Firefox zacznie korzystać z systemowego resolvera DNS z Windowsa. Jeżeli problem ustąpił, wiesz już, że Twój lokalny router lub dostawca internetu blokuje zapytania do Cloudflare na porcie 443.
Omijanie problemu za pomocą modyfikacji rejestru i ukrytych opcji (about:config)
Istnieje ukryte zaplecze przeglądarki. Wpisujesz w pasek adresu `about:config` i akceptujesz ostrzeżenie o ryzyku. To miejsce, gdzie możesz zmienić niskopoziomowe flagi silnika renderującego i modułu sieciowego (NSS – Network Security Services). Czasami problem z PR_END_OF_FILE_ERROR wynika z faktu, że serwer docelowy używa starej, błędnej implementacji protokołu TLS 1.3, z którą Firefox po prostu nie potrafi się dogadać.
Możesz wymusić obniżenie maksymalnej wersji protokołu TLS. Szukasz zmiennej `security.tls.version.max`. Domyślnie ma wartość 4 (co odpowiada TLS 1.3). Zmiana tej wartości na 3 wymusza używanie starszego, ale bardziej kompatybilnego TLS 1.2. To nie jest rozwiązanie na stałe. Obniżasz w ten sposób swoje bezpieczeństwo. Robisz to tylko po to, by zdiagnozować, czy wina leży po stronie nowoczesnych szyfrów, czy samego połączenia.
Poniżej zestawiłem, jak wyglądają stany konfiguracji TLS w silniku Firefox i ich wpływ na stabilność połączenia z przestarzałymi serwerami.
| Flaga about:config | Wartość | Wersja protokołu | Ryzyko wystąpienia błędu |
| security.tls.version.max | 4 | TLS 1.3 (Domyślna) | Wysokie (przy aktywnym skanowaniu HTTPS przez antywirus) |
| security.tls.version.max | 3 | TLS 1.2 (Wymuszony Fallback) | Niskie (bardzo wysoka kompatybilność wsteczna) |
| security.tls.version.min | 1 | TLS 1.0 (Przestarzały) | Krytyczne ryzyko bezpieczeństwa. Nie stosować. |
| security.enterprise_roots.enabled | true | Magazyn certyfikatów Windows | Rozwiązuje problemy z zaporami firmowymi. |
Zwróć uwagę na ostatnią pozycję w tabeli. Zmienna `security.enterprise_roots.enabled` to absolutna tarcza na problemy z oprogramowaniem korporacyjnym. Domyślnie ustawiona jest na false. Zmiana na true nakazuje przeglądarce Firefox ufać głównym certyfikatom zainstalowanym w systemie Windows. Jeżeli pracujesz w korporacji i Twój dział IT wdrożył własne certyfikaty do podsłuchiwania ruchu (DLP – Data Loss Prevention), włączenie tej flagi natychmiast naprawia PR_END_OF_FILE_ERROR. Przeglądarka przestaje traktować firmowy serwer proxy jak atakującego hakera.
Odinstalowanie antywirusów zewnętrznych firm
Wielu użytkowników trzyma na dyskach darmowe antywirusy z przyzwyczajenia. Windows 10 i 11 posiadają wbudowanego Windows Defendera. To narzędzie zintegrowane bezpośrednio z jądrem systemu. Nie używa agresywnych metod przechwytywania ruchu w warstwie aplikacji (jak robi to np. Avast wstrzykując swoje biblioteki DLL w procesy przeglądarki). Błąd PR_END_OF_FILE_ERROR w ponad połowie przypadków znika bezpowrotnie po całkowitym odinstalowaniu zewnętrznego pakietu bezpieczeństwa dedykowanym narzędziem (tzw. Removal Tool dostarczany przez producenta antywirusa, np. kavremover dla Kaspersky’ego).
Zwykłe usunięcie z panelu sterowania zostawia w rejestrze systemowym filtry NDIS. Karta sieciowa nadal próbuje przepuszczać ruch przez nieistniejący sterownik antywirusa. Pakiety są gubione. Używaj wyłącznie oficjalnych deinstalatorów czyszczących system do spodu.
Uszkodzenie stosu TCP/IP w systemie Windows
Zdarza się, że to sam system operacyjny gubi pakiety z powodu uszkodzonego stosu sieciowego. Gniazda Winsock, które odpowiadają za komunikację aplikacji z kartą sieciową, mogą ulec korupcji po instalacji programów modyfikujących sieć (np. Hamachi, VMware, VirtualBox). Firefox wysyła prośbę o nawiązanie połączenia, ale Winsock po drodze ucina nagłówki. Serwer odbiera uszkodzone żądanie i zamyka sesję. Koniec pliku.
Zamiast szukać winy w przeglądarce, zresetuj interfejsy sieciowe w Windowsie. Uruchom wiersz polecenia (cmd.exe) jako administrator. Wpisz komendę `netsh winsock reset` i naciśnij Enter. Następnie wpisz `netsh int ip reset`. Zrestartuj komputer. To czyści tablice routingu i przywraca gniazda do stanu fabrycznego. Bardzo często rozwiązuje to problemy z siecią, których diagnoza zajęłaby godziny.
Kwestia oprogramowania szpiegującego i adware
Jeżeli nie masz VPN, antywirus jest wyłączony, a profil czysty, a błąd nadal blokuje strony – masz infekcję. Złośliwe oprogramowanie typu adware próbuje wstrzyknąć swoje reklamy w ruch HTTPS. Instaluje lewy certyfikat w systemie i próbuje przepisać kod stron internetowych w locie. Firefox wykrywa niezgodność sum kontrolnych certyfikatu i zrywa wymianę kluczy. Strona się nie ładuje, widzisz błąd.
Przeskanuj maszynę programem AdwCleaner lub Malwarebytes. Szukaj ukrytych proxy w ustawieniach systemowych Windowsa. Złośliwy kod często dodaje skrypt konfiguracyjny PAC (Proxy Auto-Configuration), który wymusza kierowanie całego ruchu przez serwer kontrolowany przez atakującego. Jeżeli znajdziesz adres w formacie `http://127.0.0.1:8080/proxy.pac` w ustawieniach sieciowych Windows, natychmiast go usuń.
Podsumowanie problemu z weryfikacją TLS
Zrzucanie winy na twórców przeglądarki to ślepy zaułek. Moduł NSS w Mozilli po prostu robi swoje. Chroni dane. Jeżeli połączenie nie spełnia rygorystycznych standardów kryptograficznych, jest ubijane. Błąd o końcu pliku to objaw zewnętrznej ingerencji w szyfrowany strumień. To ostrzeżenie. Ktoś lub coś modyfikuje Twoje pakiety sieciowe w czasie rzeczywistym. Najczęściej to Twój własny antywirus lub klient VPN. Rzadziej – złośliwe oprogramowanie. Weryfikacja tych trzech obszarów rozwiązuje problem na dobre.
Nie marnuj czasu na czyszczenie ciasteczek. To nic nie da. Ciasteczka to dane aplikacji, a PR_END_OF_FILE_ERROR to błąd na poziomie warstwy transportowej protokołu TLS. Zamiast klikać na oślep w interfejsie, wyłączaj po kolei usługi sieciowe w systemie Windows i obserwuj reakcję przeglądarki.
Przestań polegać na automatycznych naprawach systemu. Weź kontrolę nad własnym stosem sieciowym. Wejdź w about:config, zmień flagę enterprise_roots, ubij proces antywirusa w menedżerze zadań i sprawdź, czy ruch sieciowy wraca do normy. Czy wiesz w ogóle, ile zewnętrznych usług filtruje Twoje pakiety HTTPS w tej konkretnej sekundzie?
Najczęściej zadawane pytania (FAQ)
- Co to jest błąd PR_END_OF_FILE_ERROR?
Błąd ten oznacza, że bezpieczne połączenie szyfrowane (HTTPS) zostało nieoczekiwanie przerwane przez serwer lub oprogramowanie pośredniczące, zanim przeglądarka Firefox zdołała odczytać wszystkie dane certyfikatu SSL. - Jak szybko naprawić PR_END_OF_FILE_ERROR?
Najszybszą metodą jest tymczasowe wyłączenie oprogramowania VPN lub dezaktywacja funkcji skanowania ruchu HTTPS (Web Shield) w programie antywirusowym. Często pomaga również utworzenie nowego profilu użytkownika w przeglądarce. - Czy czyszczenie ciasteczek pomoże na ten błąd?
Nie. Ciasteczka i pamięć podręczna to dane warstwy aplikacji, natomiast ten błąd dotyczy problemów z weryfikacją warstwy transportowej (TLS). Usuwanie historii przeglądania nie przyniesie żadnego efektu. - Dlaczego błąd pojawia się tylko w przeglądarce Firefox?
Firefox używa własnego, całkowicie niezależnego magazynu certyfikatów i modułu kryptograficznego NSS. W przeciwieństwie do Chrome czy Edge, nie ufa domyślnie certyfikatom systemowym Windows, przez co jest bardziej wrażliwy na ingerencję antywirusów w ruch sieciowy. - Czy zmiana protokołu VPN może rozwiązać problem?
Tak. Zmiana protokołu w kliencie VPN z UDP na TCP (np. OpenVPN TCP) zapobiega fragmentacji pakietów na routerach, co jest jedną z głównych przyczyn urywania łańcuchów certyfikatów i generowania tego błędu. - Jak wymusić na Firefoxie używanie certyfikatów systemu Windows?
Należy wpisać w pasku adresu about:config, odszukać flagę o nazwie security.enterprise_roots.enabled i zmienić jej wartość z false na true. Pozwala to na akceptację certyfikatów z zapór firmowych i antywirusów.
Bibliografia
1. Mozilla Support – https://support.mozilla.org
2. Bugzilla – https://bugzilla.mozilla.org
3. Microsoft Learn – https://learn.microsoft.com
4. Cisco Networking Academy – https://www.netacad.com
5. Cloudflare Learning Center – https://www.cloudflare.com
