Sprawdzanie certyfikatu SSL: online, w przeglądarce i przez openssl
Sprawdzanie certyfikatu SSL pokazuje, czy przeglądarki ufają Twojemu https: czy certyfikat nie wygasł, czy nazwa zgadza się z domeną, czy łańcuch jest pełny i kto go wystawił. Najszybciej sprawdzisz SSL online, wpisując domenę w sprawdzanie certyfikatu SSL — wynik pojawi się po kilku sekundach. Bez działającego certyfikatu przeglądarka oznacza stronę jako niebezpieczną, a część odwiedzających odchodzi, nie czekając na załadowanie.
Jak sprawdzić certyfikat SSL online: krok po kroku
- Otwórz sprawdzanie certyfikatu SSL i wpisz domenę:
example.com. Można też wkleić pełny adres — narzędzie samo wyciągnie nazwę hosta. Niestandardowy port podaje się po dwukropku:example.com:8443. - Narzędzie łączy się z serwerem tak samo rygorystycznie jak przeglądarka: weryfikuje łańcuch zaufania i zgodność nazwy. Jeśli ścisła weryfikacja się nie powiedzie, łączy się drugi raz bez niej — żeby mimo to pokazać certyfikat i wyjaśnić, co jest nie tak.
- Spójrz na baner na górze: ile dni zostało do wygaśnięcia. Poniżej 30 dni pojawia się żółte ostrzeżenie; czerwony baner oznacza, że przeglądarki nie ufają certyfikatowi, a powody są wypisane niżej: certyfikat wygasł, został wystawiony na inną nazwę, jest samopodpisany albo łańcuch nie przechodzi weryfikacji. Pod listą widać też komunikat OpenSSL ze ścisłej próby.
- Przejrzyj karty ze szczegółami: Common Name, wystawca, daty „ważny od” i „ważny do”, typ i długość klucza (RSA krótszy niż 2048 bitów jest oznaczany jako słaby), algorytm podpisu oraz lista nazw alternatywnych (SAN) — muszą się na niej znaleźć wszystkie warianty domeny, także z www.
- Powtórz test dla
www.example.comi subdomen. Każda nazwa może mieć własny certyfikat, a błąd siedzi zwykle tam, gdzie nikt nie zagląda.
Uczciwie o ograniczeniach: to jednorazowe sprawdzenie jednej nazwy. Narzędzie nie testuje, jakie wersje TLS i szyfry przyjmuje serwer, nie szuka mieszanej zawartości na stronach i samo nie pilnuje terminu ważności. Wersje protokołów sprawdzisz poleceniami openssl z sekcji niżej albo skanerem Shield.
Jak zobaczyć certyfikat w przeglądarce
- Chrome, Edge i inne przeglądarki na Chromium: kliknij ikonę po lewej stronie adresu, potem „Połączenie jest bezpieczne” → „Certyfikat jest ważny”. Otworzy się okno z polami „Wystawiony dla”, „Wystawiony przez”, okresem ważności i zakładką z łańcuchem.
- Firefox: kłódka → „Połączenie jest zabezpieczone” → „Więcej informacji” → „Wyświetl certyfikat”.
- Safari: kłódka w pasku adresu → „Pokaż certyfikat”.
Przeglądarka wystarczy, żeby szybko zobaczyć termin i wystawcę, ale nie jest ostatecznym testem: buforuje certyfikaty pośrednie i potrafi „dokończyć” niepełny łańcuch, którego robot albo aplikacja mobilna nie przyjmą.
Sprawdzanie SSL z wiersza poleceń (openssl)
openssl jest dostępny w macOS i Linuksie, w Windows — na przykład w pakiecie Git for Windows. Podstawowe polecenie łączy się z serwerem i wypisuje łańcuch oraz wynik weryfikacji:
openssl s_client -connect example.com:443 -servername example.com </dev/null
Parametr -servername przekazuje nazwę strony (SNI). Bez niego serwer z wieloma stronami może zwrócić certyfikat innej domeny i zaczniesz naprawiać błąd, którego nie ma. W wyniku szukaj wiersza Verify return code: 0 (ok) — łańcuch w porządku; 21 (unable to verify the first certificate) — zwykle serwer nie wysyła certyfikatu pośredniego; 10 (certificate has expired) — wygasł; 18 (self-signed certificate) — samopodpisany.
Daty, właściciela i wystawcę wyciągniesz jednym wierszem:
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issuer
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -ext subjectAltName
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -checkend 1209600
notBefore i notAfter to początek i koniec ważności, -ext subjectAltName wypisuje listę nazw (OpenSSL 1.1.1 i nowsze), a -checkend 1209600 odpowiada, czy certyfikat wygaśnie w ciągu 14 dni (1 209 600 sekund) — wygodny wiersz do zadania cron monitorującego termin.
Czy serwer przyjmuje przestarzały protokół, pokaże próba połączenia tylko nim: openssl s_client -connect example.com:443 -servername example.com -tls1_1 </dev/null. Jeśli uzgadnianie się powiedzie — TLS 1.1 jest na serwerze włączony. Zastrzeżenie: nowe wydania OpenSSL mogą blokować stare wersje po stronie klienta i wtedy błąd nic nie mówi o serwerze. Dla TLS 1.2 i 1.3 użyj -tls1_2 i -tls1_3.
Na co zwrócić uwagę w raporcie
| Parametr | Co powinno być |
|---|---|
| Ważność | Więcej niż dwa tygodnie zapasu; darmowe certyfikaty żyją około trzech miesięcy i odnawiają się automatycznie |
| Nazwa w certyfikacie | Zgadza się z domeną, w tym wariant z www |
| Łańcuch zaufania | Pełny: bez pośredniego certyfikatu część klientów zgłosi błąd |
| Protokoły | TLS 1.2 i 1.3; przestarzałe wersje lepiej wyłączyć |
| Wydawca | Znany urząd certyfikacji, a nie certyfikat samopodpisany |
Co robić w przypadku błędów
- Wygasła ważność. Zaktualizuj certyfikat i sprawdź, czy automatyczne odnawianie rzeczywiście działa.
- Nazwa się nie zgadza. Dodaj potrzebne domeny do certyfikatu lub skonfiguruj osobny.
- Niepełny łańcuch. Doładuj pośredni certyfikat na serwer.
- Mieszana zawartość. Zmień linki do obrazków, stylów i skryptów z http na https, w przeciwnym razie przeglądarka zgłasza błąd nawet przy ważnym certyfikacie.
Błędy SSL: jak wyglądają i jak je naprawić
| Błąd | Jak się objawia | Co zrobić |
|---|---|---|
| Certyfikat wygasł | Chrome: NET::ERR_CERT_DATE_INVALID; openssl: certificate has expired | Wystaw certyfikat ponownie i sprawdź automatyczne odnawianie. Częsty przypadek: nowy plik jest już na dysku, ale serwera WWW nie przeładowano i nadal serwuje stary. |
| Niezgodna nazwa | NET::ERR_CERT_COMMON_NAME_INVALID | Wystaw certyfikat ze wszystkimi nazwami w SAN — na przykład example.com i www.example.com. Wildcard *.example.com obejmuje jeden poziom subdomen, ale nie samą example.com ani a.b.example.com. |
| Niepełny łańcuch | W jednych przeglądarkach działa, w innych — NET::ERR_CERT_AUTHORITY_INVALID; openssl: unable to verify the first certificate | Zainstaluj pełny łańcuch: certyfikat strony plus pośrednie. Dla Let's Encrypt w nginx wskazuje się fullchain.pem, a nie cert.pem. |
| Certyfikat samopodpisany | NET::ERR_CERT_AUTHORITY_INVALID; openssl: self-signed certificate | Zastąp go certyfikatem zaufanego urzędu. Darmowo — Let's Encrypt albo certyfikat wystawiany przez hosting lub CDN. |
| Tylko przestarzały TLS | Zwykle ERR_SSL_VERSION_OR_CIPHER_MISMATCH | Włącz TLS 1.2 i 1.3, wyłącz SSL 3.0, TLS 1.0 i 1.1, zaktualizuj serwer WWW i OpenSSL. |
| Zły czas | Błąd daty przy certyfikacie, który w rzeczywistości jest ważny | Sprawdź zegar na urządzeniu użytkownika albo na serwerze: ważność porównywana jest z bieżącą datą. |
Okres ważności certyfikatów SSL
Maksymalny okres ważności publicznych certyfikatów TLS ustalają zasady CA/Browser Forum — zrzeszenia urzędów certyfikacji i twórców przeglądarek. Przez lata limit wynosił 398 dni. W kwietniu 2025 roku forum przyjęło głosowanie SC-081 o stopniowym skracaniu i pierwszy etap już obowiązuje:
| Data wystawienia certyfikatu | Maksymalna ważność |
|---|---|
| od 15 marca 2026 roku | 200 dni |
| od 15 marca 2027 roku | 100 dni |
| od 15 marca 2029 roku | 47 dni |
Limit liczy się według daty wystawienia: wcześniej wydany certyfikat działa do końca swojego okresu. Szczegóły — w głosowaniu SC-081 na stronie CA/Browser Forum. Darmowe certyfikaty Let's Encrypt i tak są krótkie: według FAQ Let's Encrypt są ważne 90 dni (opcjonalnie 6 dni), a 90-dniowe zaleca się odnawiać co 60 dni. Wniosek: ręczne odnawianie raz w roku odchodzi do przeszłości, odnawiać musi automat.
Automatyczne odnawianie Let's Encrypt: jak sprawdzić, że działa
sudo certbot certificates
sudo certbot renew --dry-run
systemctl list-timers | grep certbot
certbot certificatespokaże wszystkie certyfikaty na serwerze i datę wygaśnięcia każdego.certbot renew --dry-runprzećwiczy odnowienie na testowym serwerze Let's Encrypt, nie ruszając produkcyjnych certyfikatów. Jeśli test się nie uda, prawdziwe odnowienie też się nie uda.- Odnowienie uruchamia timer systemd albo zadanie cron; przy instalacji certbota ze snapa timer nazywa się
snap.certbot.renew.timer. Nie ma ani jednego, ani drugiego — nie ma automatycznego odnawiania. - Żeby serwer WWW wczytał nowy certyfikat, dodaj przeładowanie po odnowieniu:
--deploy-hook "systemctl reload nginx". - Typowe przyczyny awarii: ścieżka
/.well-known/acme-challenge/zablokowana przekierowaniem, hasłem lub regułą firewalla; domena przeniosła się na inny serwer albo CDN, a certbot został na starym.
Jeśli certyfikat wystawia hosting lub CDN, odnawianie zwykle leży po ich stronie — ale tylko dopóki domena na nich wskazuje. Po każdej zmianie DNS sprawdź certyfikat ponownie.
Monitorowanie certyfikatu
- Powiadomienie z wyprzedzeniem. Zewnętrzny monitoring albo skrypt z
openssl x509 -checkendw cronie: alarm co najmniej dwa tygodnie przed wygaśnięciem. - Ponowne sprawdzenie po odnowieniu. Przepuść domenę przez sprawdzanie SSL: nowe daty, pełny łańcuch, wszystkie nazwy w SAN.
- Dzienniki Certificate Transparency. Każdy publiczny certyfikat trafia do otwartych dzienników; wyszukanie domeny (np. na crt.sh) pokazuje, jakie certyfikaty dla niej wystawiono — widać tam też zapomniane subdomeny i nieoczekiwane wystawienia.
- Regularny audyt. Shield to płatne sprawdzenie bezpieczeństwa (jednorazowo z salda albo w abonamencie monitoringu); w grupie testów TLS i certyfikatu sprawdza ważność i termin certyfikatu, przestarzałe TLS 1.0/1.1, przekierowanie z HTTP na HTTPS i HSTS.
Darmowy czy płatny certyfikat
Dla wyszukiwania nie ma różnicy: przeglądarka i robot sprawdzają ważność, a nie cenę. Darmowe certyfikaty są wydawane automatycznie i odnawiają się same — to wystarcza przytłaczającej większości stron. Płatne mają sens tam, gdzie potrzebne jest rozszerzone sprawdzenie organizacji, ubezpieczenie lub wsparcie rzadkich scenariuszy. Najważniejsze, aby automatyczne odnawianie rzeczywiście działało: przeterminowany drogi certyfikat jest gorszy od na czas odnowionego darmowego.
Jak to się ma do SEO
Https — podstawowy wymóg: strona bez niego traci zaufanie i odwiedzających. Ponadto błąd certyfikatu przeszkadza w naszych sprawdzeniach: strona może okazać się niedostępna dla indeksowania. Pełny obraz bezpieczeństwa daje Shield, a nagłówki zabezpieczeń zostały omówione w artykule o nagłówkach bezpieczeństwa.