Co oznacza „Połączenie nie jest prywatne” i jak to naprawić
· 6 min czytania
Co oznacza ten błąd
Przeglądarka połączyła się z serwerem, serwer przedstawił certyfikat, a przeglądarka odmówiła mu zaufania. Chrome pokazuje „Połączenie nie jest prywatne” z kodem błędu poniżej; Firefox „Ostrzeżenie: potencjalne zagrożenie bezpieczeństwa”; Safari „To połączenie nie jest prywatne”. Strona nie została zhakowana, a komputer nie jest zainfekowany; certyfikat wysłany przez serwer nie przechodzi sprawdzeń, które wykonuje przeglądarka.
Kod błędu mówi, które sprawdzenie zawiodło:
NET::ERR_CERT_DATE_INVALID: certyfikat wygasł albo jego data początkowa leży w przyszłości (albo zegar odwiedzającego jest zły).NET::ERR_CERT_COMMON_NAME_INVALID: certyfikat jest na inną nazwę, na przykład nawww.przyklad.pl, ale nie naprzyklad.pl.NET::ERR_CERT_AUTHORITY_INVALID: przeglądarka nie może prześledzić certyfikatu do zaufanego urzędu: samopodpisany, nieznany wystawca albo brak certyfikatu pośredniego.NET::ERR_CERT_REVOKED: certyfikat został unieważniony przez wystawcę.SSL_ERROR_BAD_CERT_DOMAINiSEC_ERROR_EXPIRED_CERTIFICATEto wersje błędów nazwy i daty w Firefoksie.
Częste przyczyny
- Certyfikat wygasł. Certyfikaty Let’s Encrypt są ważne 90 dni; automatyczne odnawianie zawodziło tygodniami i nikt nie zauważył do dnia, w którym się skończyły. Płatne certyfikaty wygasają po roku, a e-mail o odnowieniu poszedł na stary adres.
- Odnowiony, ale nieprzeładowany. certbot zapisał nowy certyfikat na dysku, ale serwer WWW nadal serwuje stary z pamięci, bo brakuje hooka przeładowania.
- Zła nazwa. Certyfikat obejmuje
przyklad.pl, ale odwiedzający wchodzą nawww.przyklad.pl, albo dodano nową subdomenę bez certyfikatu. - Brak certyfikatu pośredniego. Serwer wysyła tylko własny certyfikat, bez łańcucha. Przeglądarki na komputerach często uzupełniają lukę z pamięci podręcznej; telefony i aplikacje zawodzą.
- Problem z zegarem. Na komputerze odwiedzającego zła data sprawia, że każdy certyfikat wygląda na wygasły albo jeszcze nieważny. Na serwerze zły zegar psuje odnawianie.
- CDN albo proxy z przodu z własnym certyfikatem, który wygasł albo nie obejmuje nazwy, podczas gdy serwer źródłowy jest w porządku.
Jeśli odwiedzasz cudzą stronę
Najpierw sprawdź datę i godzinę na komputerze; wyczerpana bateria CMOS albo wyłączona synchronizacja czasu psuje każdą stronę. Potem spróbuj z innej sieci. Jeśli ostrzeżenie pojawia się tylko na jednej stronie i na każdym urządzeniu, problemem jest certyfikat strony i właściciel musi to naprawić. Kliknięcie „Przejdź do witryny (niebezpieczne)” jest w porządku na stronie, którą znasz, nie tam, gdzie jest logowanie albo płatność.
Jeśli to Twoja strona: najpierw sprawdź
Uruchom SSL checker. Pokazuje datę wygaśnięcia, nazwy, dla których certyfikat jest ważny, i czy łańcuch jest kompletny, z zewnątrz, bez żadnej pamięci podręcznej przeglądarki. Potem, na własnym serwerze:
# co serwer faktycznie wysyła?
echo | openssl s_client -connect przyklad.pl:443 -servername przyklad.pl 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
# co jest na dysku?
sudo certbot certificates
# czy zegar serwera jest dobry?
timedatectl
Jeśli daty na dysku są nowsze niż daty wysyłane przez serwer, masz przypadek 2: odnowiony, ale nieprzeładowany.
Naprawy na własnym serwerze
1. Odnów przez certbot
sudo certbot renew
# albo, jeśli renew mówi „not yet due”, a serwowany certyfikat jest stary:
sudo certbot renew --force-renewal
sudo systemctl reload nginx # albo apache2
Jeśli odnowienie zawodzi, wynik mówi dlaczego. Zwykłe powody: port 80 jest zablokowany albo przekierowany tam, gdzie certbot się nie spodziewa (wyzwanie HTTP-01 wymaga, żeby /.well-known/acme-challenge/ było osiągalne przez zwykłe HTTP), rekord DNS wskazuje inny serwer albo po wielu nieudanych próbach osiągnięto limit zapytań. Usuń przyczynę i uruchamiaj sudo certbot renew --dry-run, aż przejdzie.
2. Zautomatyzuj przeładowanie
# Debian/Ubuntu: certbot instaluje timer; sprawdź go
systemctl list-timers | grep certbot
# dodaj hook, żeby serwer WWW podjął nowy certyfikat
printf '#!/bin/sh\nsystemctl reload nginx\n' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-web.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-web.sh
3. Dodaj brakującą nazwę
sudo certbot --nginx -d przyklad.pl -d www.przyklad.pl -d sklep.przyklad.pl --expand
Flaga --expand zastępuje istniejący certyfikat takim, który obejmuje wszystkie wymienione nazwy.
4. Napraw łańcuch
Z certbotem kieruj serwer WWW na fullchain.pem, nigdy na cert.pem:
ssl_certificate /etc/letsencrypt/live/przyklad.pl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/przyklad.pl/privkey.pem;
Apache: SSLCertificateFile z fullchain.pem. Przy kupionym certyfikacie pobierz certyfikat pośredni („CA bundle”) od wystawcy i dopisz go do pliku certyfikatu. Przetestuj przez sudo nginx -t (Apache: sudo apachectl configtest), przeładuj, potem sprawdź łańcuch przez SSL checker.
5. Napraw zegar
sudo timedatectl set-ntp true
timedatectl
Serwer, którego zegar odbiega o więcej niż kilka minut, oblewa walidację certyfikatów w obie strony.
6. Hosting współdzielony albo kreator stron
Większość dostawców wystawia i odnawia certyfikaty Let’s Encrypt z panelu („SSL/TLS”, „Bezpieczeństwo”, „Let’s Encrypt”). Otwórz go, sprawdź, czy certyfikat obejmuje zarówno przyklad.pl, jak i www.przyklad.pl, i kliknij odnów albo wystaw ponownie. Jeśli panel mówi, że certyfikat jest ważny, a przeglądarki się nie zgadzają, dostawca ma po swojej stronie problem z przeładowaniem albo łańcuchem.
Gdy to problem dostawcy hostingu
Dzień dobry, od około 06:00 UTC przeglądarki pokazują „Połączenie nie jest prywatne” (NET::ERR_CERT_DATE_INVALID) dla mojej strony przyklad.pl. Panel pokazuje ważny certyfikat, więc serwer WWW wygląda na taki, który serwuje stary. Czy mogliby Państwo przeładować certyfikat na serwerze i sprawdzić automatyczne odnawianie dla mojej domeny?
Jak zapobiec następnemu
Wygasły certyfikat to jedyna awaria ze znaną datą. Monitoring certyfikatów SSL ostrzega przed wygaśnięciem i ponownie, gdy łańcuch albo nazwa są złe; 5 sprawdzeń jest bezpłatnych. Awaria? Naprawiamy: na własnym serwerze Quick Fix odnawia certyfikat tam, gdzie skonfigurowany jest certbot, i przeładowuje serwer WWW, w stałej cenie; Deep Fix konfiguruje odnawianie tam, gdzie jeszcze go nie ma. Zobacz naprawa serwera. Jeśli bezpieczne połączenie zawodzi jeszcze przed certyfikatem, zobacz ERR_SSL_PROTOCOL_ERROR.
Co teraz
Sprawdź certyfikat
Data wygaśnięcia, łańcuch i nazwa hosta dowolnego certyfikatu w kilka sekund. Za darmo, bez rejestracji.
SSL checkerAwaria? Naprawiamy.
Na Twoim własnym serwerze albo na hostingu z dostępem SSH: Quick Fix w stałej cenie na częste przyczyny, Deep Fix rozliczany w blokach po 15 minut na resztę, przez całą dobę. Cena przed zamówieniem.
Zamów naprawęWięcej poradników
- Strona nie działa: co zrobić w pierwszych 15 minutach
- Awaria serwera: co sprawdzić i w jakiej kolejności
- Błąd 500 Internal Server Error: znajdź przyczynę w logach i przywróć stronę
- Błąd 502 Bad Gateway: znajdź przyczynę i napraw
- Błąd 503: przeciążenie, konserwacja czy limit hostingu?
- Błąd 504 Gateway Timeout: znajdź, co spowalnia stronę
- Błąd 521 i 522 w Cloudflare: serwer źródłowy nie odpowiada
- DNS_PROBE_FINISHED_NXDOMAIN: domena przestała odpowiadać
- ERR_CONNECTION_REFUSED: serwer odrzuca połączenie
- ERR_CONNECTION_TIMED_OUT: serwer nie odpowiada na czas
- ERR_SSL_PROTOCOL_ERROR: bezpieczne połączenie zawodzi przed certyfikatem
- ERR_TOO_MANY_REDIRECTS: znajdź pętlę przekierowań i ją przerwij
- Błąd 403 Forbidden: co blokuje dostęp do Twojej strony
- ERR_NAME_NOT_RESOLVED: nie można znaleźć nazwy strony
- „Błąd podczas nawiązywania połączenia z bazą danych” w WordPressie: przyczyna i naprawa
- ERR_CONNECTION_RESET: dlaczego połączenie zrywa się w połowie
- Błąd 429 Too Many Requests: który limit blokuje odwiedzających
- ERR_EMPTY_RESPONSE: serwer nie wysłał żadnych danych
- Błąd krytyczny WordPress: znajdź przyczynę i przywróć stronę