NET::ERR_CERT_AUTHORITY_INVALID: przeglądarka nie ufa wystawcy certyfikatu
W skrócie
Przeglądarka nie potrafi potwierdzić, kto wystawił certyfikat strony. Najczęściej to certyfikat podpisany samodzielnie (domyślny certyfikat serwera albo panelu), certyfikat testowy albo brak certyfikatu pośredniego na serwerze. Właściciel strony naprawia to certyfikatem od zaufanego wystawcy, wgranym razem z pełnym łańcuchem. Firefox pokazuje ten sam problem jako SEC_ERROR_UNKNOWN_ISSUER.
Co pokazuje przeglądarka i co to znaczy
Certyfikat strony wystawia urząd certyfikacji, a przeglądarka ma listę urzędów, którym ufa. Gdy nie potrafi połączyć certyfikatu z żadnym z nich, pokazuje ostrzeżenie zamiast strony:
- Chrome pokazuje „Połączenie nie jest prywatne” z kodem
NET::ERR_CERT_AUTHORITY_INVALID. Po kliknięciu „Zaawansowane” pisze: „Ten serwer nie mógł udowodnić, że należy do firma.pl. Jego certyfikat bezpieczeństwa nie jest zaufany w systemie operacyjnym tego komputera.”. Edge pokazuje podobne ostrzeżenie z tym samym kodem. - Firefox pokazuje „Zachowaj ostrożność. Coś tu nie gra.”. Po kliknięciu „Zaawansowane”, w części „Dlaczego ta witryna wydaje się niebezpieczna?”, wymienia trzy możliwości: nie wiadomo, kto wystawił certyfikat, certyfikat jest samopodpisany albo witryna nie wysyła certyfikatów pośrednich. Kod jest niżej, po słowach „Kod błędu”:
SEC_ERROR_UNKNOWN_ISSUERalbo, przy certyfikacie podpisanym samodzielnie,MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT.
Obie przeglądarki dodają, że przyczyną może być błędna konfiguracja albo ktoś, kto przechwytuje połączenie. Przy stronie, którą znasz i która jeszcze wczoraj działała, to zwykle konfiguracja serwera, ale dopóki ostrzeżenie jest widoczne, nie podawaj na niej żadnych danych.
Jeśli to cudza strona
- Nie wpisuj na niej haseł, danych karty ani danych osobowych i nie omijaj ostrzeżenia.
- Jeśli ten błąd widzisz na wielu stronach naraz, przyczyna jest zwykle po Twojej stronie: program antywirusowy sprawdzający połączenia https, serwer proxy w sieci firmowej albo publiczne Wi-Fi przed zalogowaniem. Firefox radzi w takiej sytuacji zapytać dział IT albo skonfigurować program antywirusowy. Otwórz stronę w innej sieci, np. w telefonie na danych komórkowych.
- Bardzo stare urządzenia nie znają nowszych urzędów certyfikacji. Let's Encrypt działa na przykład na Androidzie od wersji 7.1.1. Na starszym telefonie ostrzeżenie może dotyczyć tylko Twojego urządzenia.
- Jeśli strona nie działa w żadnej sieci i na żadnym urządzeniu, daj znać jej właścicielowi.
Najczęstsze przyczyny na Twojej stronie
| Przyczyna | Jak ją rozpoznać | Jak naprawić |
|---|---|---|
| certyfikat podpisany samodzielnie | w polu wystawcy jest ta sama nazwa co w polu właściciela (często nazwa serwera albo panelu); Firefox: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT | to zwykle domyślny certyfikat, który serwer albo panel tworzy przy instalacji; zastąp go certyfikatem od zaufanego wystawcy |
| certyfikat testowy | w nazwie wystawcy jest słowo STAGING | wygeneruj certyfikat jeszcze raz w trybie produkcyjnym i wgraj go w to samo miejsce |
| brak certyfikatu pośredniego | w Chrome na komputerze strona często działa, a na telefonie, w aplikacjach i w Firefoksie jest błąd; Firefox: SEC_ERROR_UNKNOWN_ISSUER | wgraj pełny łańcuch: cały fullchain.pem albo chain.pem w polu na certyfikat pośredni |
| certyfikat od wystawcy, którego przeglądarki nie znają | wystawca to np. wewnętrzny urząd certyfikacji firmy albo nieznana nazwa | na stronie publicznej użyj certyfikatu od publicznego urzędu certyfikacji, np. darmowego Let's Encrypt |
Brak certyfikatu pośredniego łatwo przeoczyć, bo Chrome na komputerze potrafi go pobrać sam. Bramki płatności, aplikacje i część telefonów tego nie robią, więc dla nich strona po prostu nie działa.
Jak sprawdzić, która to przyczyna
- Wpisz adres strony w narzędziu Sprawdź certyfikat. Rozpozna certyfikat testowy, podpisany samodzielnie, od nieznanego wystawcy i brak certyfikatu pośredniego.
- W Firefoksie kliknij na stronie z ostrzeżeniem „Zaawansowane”, a potem „Wyświetl certyfikat witryny”. Zobaczysz wystawcę i wszystkie certyfikaty, które wysłał serwer.
- Na komputerze z terminalem (Linux, macOS, w Windows Git Bash):
echo | openssl s_client -connect twojadomena.pl:443 \ -servername twojadomena.pl 2>/dev/null \ | grep "Verify return code"
Wynik21 (unable to verify the first certificate)oznacza brak certyfikatu pośredniego,18 (self-signed certificate)certyfikat podpisany samodzielnie, a19 (self-signed certificate in certificate chain)wystawcę spoza listy zaufanych. Poprawny certyfikat daje0 (ok).
Jak naprawić to na swojej stronie
- Wygeneruj w generatorze certyfikat w trybie produkcyjnym dla wszystkich adresów strony, np.
firma.pl, www.firma.pl. - Wgraj go według instrukcji dla swojego hostingu. Jeśli panel ma jedno pole na certyfikat, wklej cały
fullchain.pem. Jeśli ma osobne pole na certyfikat pośredni (np. „CA”, „chain”), wklej tamchain.pem. - Sprawdź w panelu, czy nowy certyfikat jest przypisany do domeny, pod którą działa strona, a nie tylko dodany do listy.
- Na własnym serwerze wskaż plik z pełnym łańcuchem: w nginx
ssl_certificate, w ApacheSSLCertificateFile, w obu przypadkachfullchain.pem. Sprawdź konfigurację (sudo nginx -talbosudo apachectl configtest) i przeładuj serwer. Całą instalację opisujemy w instrukcji dla serwera. - Sprawdź stronę jeszcze raz w narzędziu Sprawdź certyfikat albo poleceniem openssl z poprzedniej części, a potem w oknie prywatnym i na telefonie.