Rozwiązywanie problemów z SSL
Diagnostyka najczęstszych błędów SSL — wygasły cert, mixed content, błąd CA chain, pętla redirectu, fail przy wystawianiu Let's Encrypt. Komendy diagnostyczne i rozwiązania.
SSL działa w 95% przypadków — ale gdy nie działa, błędy są kryptyczne i niejednoznaczne. „NET::ERR_CERT_AUTHORITY_INVALID", „SSL handshake failed", „Mixed content blocked". W tym poradniku przejdziemy przez najczęstsze problemy i konkretne rozwiązania.
Co zyskasz
- Rozpoznasz po komunikacie błędu, co się stało.
- Wykonasz diagnostykę z linii komend (openssl, curl).
- Naprawisz typowe scenariusze: wygasły cert, niekompletny chain, mixed content.
- Wiesz, kiedy zgłosić ticket do supportu IQHost.
Wymagania wstępne
- Działający DirectAdmin dla Twojej domeny.
- Opcjonalnie: dostęp do terminala (Linux/Mac) lub WSL na Windows.
Diagnostyka — komendy
Najpierw narzędzia, które każdy admin powinien znać:
# Sprawdź czy cert jest poprawny
openssl s_client -connect mojafirma.pl:443 -servername mojafirma.pl < /dev/null
# Skróconą wersję — tylko podstawowe info
echo | openssl s_client -connect mojafirma.pl:443 2>/dev/null | openssl x509 -noout -dates -subject -issuer
# Sprawdź chain (czy intermediate dołączone)
openssl s_client -connect mojafirma.pl:443 -servername mojafirma.pl -showcerts < /dev/null
# Test HTTPS z curl
curl -v https://mojafirma.pl 2>&1 | grep -i "ssl\|cert"
Online:
- ssllabs.com/ssltest — pełna analiza SSL (A+ to wzór)
- whynopadlock.com — szuka mixed content
- crt.sh — wyszukiwarka publicznie wystawionych certów dla domeny
Wskazówka
Po każdej zmianie w konfiguracji SSL — czekaj 1-2 minuty na restart serwera, potem testuj. Cache przeglądarki też psuje — używaj incognito.
Problem 1: „NET::ERR_CERT_AUTHORITY_INVALID"
Co znaczy: Przeglądarka nie zna wystawcy certyfikatu — chain niekompletny lub samopodpisany.
Diagnostyka:
openssl s_client -connect mojafirma.pl:443 -showcerts < /dev/null | grep -E "issuer|subject"
Jeśli widzisz tylko Twój cert (bez intermediate) — chain niekompletny.
Rozwiązanie:
- Let's Encrypt: sprawdź czy DA poprawnie zainstalował chain. Certyfikaty SSL → przebudowanie (wystaw ponownie).
- Komercyjny cert: wgraj ponownie z pełnym CA bundle (intermediate + root). Patrz Wgrywanie własnego cert.
Problem 2: „NET::ERR_CERT_DATE_INVALID"
Co znaczy: Cert wygasł albo system użytkownika ma niewłaściwą datę.
Diagnostyka:
echo | openssl s_client -connect mojafirma.pl:443 2>/dev/null | openssl x509 -noout -dates
# notBefore=...
# notAfter=Dec 1 12:00:00 2025 GMT ← czy data nie minęła?
Rozwiązanie:
- Cert wygasł — odnów. Patrz Odnowienie SSL.
- Cert „w przyszłości" — DA źle zegar serwera albo user źle ma zegar.
- Cert wygasa za chwilę — wymuś odnowienie ręczne.
Problem 3: „NET::ERR_CERT_COMMON_NAME_INVALID"
Co znaczy: Cert wystawiony na inną domenę niż ta w przeglądarce.
Najczęstsza sytuacja: wpisałeś https://mojafirma.pl, ale cert pokrywa tylko *.mojafirma.pl (subdomeny). Albo cert na iqhost.pl, a strona na dev.iqhost.pl (brak SAN).
Diagnostyka:
echo | openssl s_client -connect mojafirma.pl:443 2>/dev/null | openssl x509 -noout -text | grep -E "Subject:|DNS:"
Sprawdź pole Subject: (CN) i DNS: (SAN). Czy Twoja domena jest na liście?
Rozwiązanie:
- Wystaw nowy cert z poprawną listą hostów (DA → Certyfikaty SSL → wpisz wszystkie potrzebne domeny).
Problem 4: Mixed content — kłódka z wykrzyknikiem
Co znaczy: Strona ładowana po HTTPS, ale niektóre zasoby (obrazki, JS, CSS) przez HTTP. Przeglądarka oznacza jako niezabezpieczone.
Diagnostyka:
- F12 → Console → szukaj „Mixed Content" warnings
- whynopadlock.com — automat
Typowe źródła:
- Hardcodowane URL-e w CMS/sklepie —
http://mojafirma.pl/wp-content/... - Linki do CDN po HTTP — np. fonty z
http://fonts.googleapis.com/... - Iframe z zewnętrznej strony po HTTP
Rozwiązanie:
- WordPress: plugin Better Search Replace → zamień wszystkie
http://mojafirma.plnahttps://mojafirma.plw bazie - Ręczne: edytuj kod, zmień
http:nahttps:(lub na//— protocol-relative URL działa w obu) - Cloudflare: włącz Always Use HTTPS + Automatic HTTPS Rewrites
Problem 5: Pętla redirectu (Too many redirects)
Co znaczy: Strona przekierowuje w kółko HTTP↔HTTPS.
Typowa przyczyna: Cloudflare na Flexible SSL + serwer wymusza HTTPS przez .htaccess.
User → HTTPS → Cloudflare → HTTP → Twój serwer → 301 do HTTPS → Cloudflare → HTTP → ...
Rozwiązanie:
- W Cloudflare → SSL/TLS → ustaw Full lub Full (strict) (zamiast Flexible)
- Lub: tymczasowo wyłącz redirect w
.htaccessi sprawdź czy strona działa po HTTPS przez Cloudflare
Problem 6: Let's Encrypt — „Failed to obtain certificate"
Diagnostyka: w komunikacie błędu DA szukaj fragmentu:
- „unauthorized" — domena nie wskazuje na nasz serwer
- „timeout" — Let's Encrypt nie mógł połączyć się z
/.well-known/acme-challenge/ - „rateLimited" — przekroczone limity Let's Encrypt
- „dns problem" — wildcard challenge zawiódł
Rozwiązania:
| Błąd | Rozwiązanie |
|---|---|
| unauthorized | dig +short mojafirma.pl — sprawdź czy IP wskazuje na nas. Jeśli nie — popraw rekord A. |
| timeout | Sprawdź .htaccess — czy nie blokuje /.well-known/. Niektóre WAF blokują. |
| rateLimited | Poczekaj 1-7 dni. Limity Let's Encrypt: 50 certów/domena/tydzień. |
| dns problem | Dla wildcard — sprawdź czy NS-y są IQHost (dig +short NS mojafirma.pl). |
Problem 7: Cert poprawny, ale strona „SSL handshake failed"
Co znaczy: Klient nie obsługuje protokołów/ciphersów wymaganych przez serwer.
Diagnostyka:
# Sprawdź jakie protokoły akceptuje serwer
nmap --script ssl-enum-ciphers -p 443 mojafirma.pl
# Z openssl
openssl s_client -connect mojafirma.pl:443 -tls1_2 < /dev/null # TLS 1.2
openssl s_client -connect mojafirma.pl:443 -tls1_3 < /dev/null # TLS 1.3
Rozwiązanie:
- Bardzo starzy klienci (XP, IE6) nie obsługują nowoczesnego TLS. Nie da się ich uszczęśliwić bez obniżania bezpieczeństwa.
- Nowoczesne klienty (przeglądarki od 2020+) działają OK.
Problem 8: Brak HTTPS na subdomenie (główna działa)
Diagnostyka:
curl -v https://blog.mojafirma.pl 2>&1 | grep -i cert
Najczęściej: cert pokrywa tylko mojafirma.pl (bez wildcard), subdomena nie jest w SAN.
Rozwiązanie:
- Wystaw cert z subdomeną w liście hostów:
mojafirma.pl www.mojafirma.pl blog.mojafirma.pl - Albo wildcard
*.mojafirma.pl
Patrz Let's Encrypt step 3.
Problem 9: Cert kosztuje, chcę darmowy
Let's Encrypt zastępuje praktycznie każdy DV cert (Domain Validation). Nie zastąpi OV/EV (Organization/Extended) — wymagane dla niektórych banków, gov.
Dla większości stron komercyjnych: Let's Encrypt = darmowy i wystarczający. Patrz Let's Encrypt.
Problem 10: SSL Labs Grade C lub niżej
Diagnostyka: ssllabs.com/ssltest → zobacz „Configuration".
Typowe powody niskiej oceny:
- Wsparcie TLS 1.0/1.1 (przestarzałe) — wyłącz, zostaw TLS 1.2+
- Słabe ciphersy (RC4, 3DES) — wyłącz
- Brak HSTS — włącz. Patrz Wymuszanie HTTPS
- Klucz 1024-bit — wystaw nowy z 2048+
- Brak Forward Secrecy — włącz cipher suites z DHE/ECDHE
Konfiguracja TLS odbywa się na poziomie serwera — w DA większość ustawień jest standardowa. Jeśli chcesz tunować ręcznie, zgłoś ticket do supportu IQHost.
Kiedy zgłosić ticket do supportu
Załóż zgłoszenie, gdy:
- Wystawienie cert zwraca błędy serwera (500, 503)
- Cert wygląda OK, ale ssllabs zwraca błąd „Connection failed"
- Konflikty między domenami (cert dla jednej kradnie HTTPS innej)
- Pliki cert i klucz są poprawne (przeszły MD5 test), ale DA nie chce wgrać
- Po naszych zmianach SSL nadal nie działa po 1h propagacji
W zgłoszeniu podaj: nazwa domeny, treść błędu z DA, kroki które wykonałeś.
Najczęstsze pytania
„Cert wygasł 5 min temu, strona już nie działa — naprawa pilna"
- Wymuś odnowienie (Certyfikaty SSL → Ponów)
- Jeśli nie pomaga — wystaw nowy (radio button → ZAPISZ)
- W trakcie czekania: poinformuj klientów, że strona w awarii
„Po wgraniu własnego cert strona dla głównej domeny działa, dla www. nie"
Cert nie ma www.mojafirma.pl w SAN. Wystaw nowy z obiema domenami.
„Czy Let's Encrypt śledzi moją stronę?"
Nie — Let's Encrypt to fundacja non-profit. Nie zbiera danych z Twojej strony. Tylko widzi że Twój serwer odpowiada na challenge przy wystawianiu.
„Czy mogę używać Let's Encrypt do pożyczonej domeny?"
Jeśli kontrolujesz DNS lub HTTP tej domeny — tak. Let's Encrypt nie sprawdza własności prawnej, tylko techniczną kontrolę.
Słowniczek
- TLS — Transport Layer Security, następca SSL. Wszystkie nowoczesne HTTPS to TLS 1.2+ lub 1.3.
- Cipher suite — kombinacja algorytmów używanych w jednej sesji TLS.
- HSTS — HTTP Strict Transport Security. Wymusza HTTPS w przeglądarce.
- Mixed content — strona HTTPS ładująca zasoby HTTP.
- Forward Secrecy (PFS) — właściwość, że nawet jak ktoś ukradnie klucz, nie odszyfruje historii.
- OCSP stapling — optymalizacja sprawdzania revocation list. Konfigurowana na serwerze.
Related

Feedback
Czy ten artykuł pomógł?