Wdrozyles aplikacje na Fly.io i domena glowna dziala dobrze, ale www.twojastrona.com wyrzuca blad SSL handshake? Nie jestes sam. Ten blad 525 wystepuje bo Fly.io wymaga oddzielnych certyfikatow SSL dla kazdej nazwy hosta - i wiekszosc przewodnikow wdrazania calkowicie pomija ten krok.
Oto naprawa, przetestowana i zweryfikowana na produkcyjnym wdrozeniu.
Problem
Wdrozyles na Fly.io, dodales wlasna domene i wszystko wyglada dobrze. Potem probusjesz wejsc na www.twojastrona.com i dostajesz:
Error 525: SSL handshake failedTymczasem twojastrona.com (bez www) dziala dobrze. O co chodzi?
Dlaczego to sie dzieje
Fly.io uzywa Let's Encrypt do przydzielania certyfikatow SSL, ale jest haczyk: dodanie certyfikatu dla example.com NIE pokrywa automatycznie www.example.com.
Sa traktowane jako calkowicie oddzielne nazwy hostow. Musisz jawnie dodac certyfikat dla subdomeny www.
Rozwiazanie (5 krokow)
Krok 1: Zainstaluj Fly.io CLI
Jesli jeszcze tego nie zrobiles, zainstaluj flyctl:
# Zainstaluj flyctl
curl -L https://fly.io/install.sh | sh
# Dodaj do PATH
export FLYCTL_INSTALL="$HOME/.fly"
export PATH="$FLYCTL_INSTALL/bin:$PATH"
# Zrob to trwaym (dodaj do ~/.bashrc lub ~/.zshrc)
echo 'export FLYCTL_INSTALL="$HOME/.fly"' >> ~/.bashrc
echo 'export PATH="$FLYCTL_INSTALL/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Zweryfikuj ze dziala
flyctl versionKrok 2: Sprawdz swoje aktualne certyfikaty
Najpierw zobacz jakie certyfikaty juz masz:
flyctl certs list -a NAZWA_TWOJEJ_APPPrawdopodobnie zobaczysz cos takiego:
Host Name Added Status
example.com 1 month ago Ready
api.example.com 1 month ago ReadyZauwazyłes co brakuje? Subdomena www.
Krok 3: Dodaj certyfikat www (To naprawia problem)
Oto krytyczne polecenie ktore rozwiazuje problem:
flyctl certs add www.example.com -a NAZWA_TWOJEJ_APPFly.io automatycznie przydzieli certyfikat SSL Let's Encrypt dla twojej subdomeny www. Zobaczysz wyjscie takie jak:
You are creating a certificate for www.example.com
We are using Let's Encrypt for this certificate.
Your certificate for www.example.com is being issued.
You can validate your ownership of www.example.com by:
1: Adding an AAAA record to your DNS service which reads:
AAAA @ 2a09:8280:1::X:XXXXNie martw sie o walidacje DNS - jesli twoja domena glowna juz dziala, subdomena www zwaliduje sie automatycznie.
Krok 4: Zweryfikuj ze certyfikat jest gotowy
Poczekaj 1-2 minuty, potem sprawdz status certyfikatu:
flyctl certs show www.example.com -a NAZWA_TWOJEJ_APPSzukaj "Status: Ready". Jesli mowi "Awaiting certificates", poczekaj jeszcze minute i sprawdz ponownie.
Gdy gotowe, twoja lista certyfikatow powinna pokazywac:
flyctl certs list -a NAZWA_TWOJEJ_APPHost Name Added Status
example.com 1 month ago Ready
www.example.com 13 seconds ago ReadyIdealnie.
Krok 5: Skonfiguruj tryb SSL/TLS Cloudflare
Ten krok jest krytyczny jesli uzywasz Cloudflare do DNS (a powinienes).
- Zaloguj sie do dashboardu Cloudflare
- Wybierz swoja domene
- Wejdz w SSL/TLS → Overview
- Ustaw tryb szyfrowania na "Full" (nie "Flexible" ani "Full (strict)")
Dlaczego "Full"?
- Flexible: Cloudflare uzywa HTTPS do odwiedzajacych, ale HTTP do Fly.io (niebezpieczne, powoduje problemy)
- Full: Cloudflare uzywa HTTPS zarowno do odwiedzajacych jak i Fly.io (prawidlowo)
- Full (strict): Wymaga zaufanego urzedu certyfikacji, ale Fly.io zarzadza wlasnymi certyfikatami (powoduje bledy)
Skonfiguruj rekordy DNS (Cloudflare)
Upewnij sie ze rekordy DNS sa prawidlowo skonfigurowane:
Domena glowna (example.com):
- Typ:
AlubAAAA - Nazwa:
@(lub zostaw puste) - Zawartosc: Adres IP twojego Fly.io (z
flyctl ips list) - Status proxy: Proxied (pomaranczowa chmurka wlaczona)
Subdomena www (www.example.com):
- Typ:
CNAME - Nazwa:
www - Cel:
example.com(wskazuje na domene glowna) - Status proxy: Proxied (pomaranczowa chmurka wlaczona)
Pomaranczowa chmurka (Proxied) jest wazna - kieruje ruch przez CDN Cloudflare i wlacza SSL.
Przetestuj wszystko
Zweryfikuj ze obie domeny dzialaja:
# Testuj domene glowna
curl -I https://example.com
# Testuj subdomene www
curl -I https://www.example.comObie powinny zwrocic HTTP/2 200 (lub HTTP/1.1 200). Jesli dostajesz bledy, zobacz sekcje rozwiazywania problemow ponizej.
Typowe bledy i naprawy
Blad 525: SSL Handshake Failed
Objawy: subdomena www wyrzuca blad 525, domena glowna dziala dobrze
Przyczyny:
- Brakujacy certyfikat www na Fly.io
- Tryb SSL/TLS Cloudflare ustawiony na "Flexible" lub "Full (strict)"
Naprawa:
# Dodaj certyfikat www
flyctl certs add www.example.com -a NAZWA_TWOJEJ_APP
# Poczekaj 2 minuty na wydanie certyfikatu
sleep 120
# Zweryfikuj ze jest gotowy
flyctl certs show www.example.com -a NAZWA_TWOJEJ_APPRowniez zweryfikuj ze tryb SSL/TLS Cloudflare jest ustawiony na "Full".
Subdomena www zwraca Connection Timeout
Objawy: subdomena www w ogole sie nie laduje, brak strony bledu
Przyczyny:
- Brakujacy lub nieprawidlowy rekord DNS CNAME
- DNS nie jest proxy przez Cloudflare
- Propagacja DNS niekompletna
Naprawa:
- Sprawdz ustawienia DNS Cloudflare dla rekordu CNAME www
- Upewnij sie ze pomaranczowa chmurka (Proxied) jest wlaczona
- Poczekaj 5-15 minut na propagacje DNS
- Wyczysc cache przegladarki lub testuj w trybie incognito
Certyfikat pokazuje "Awaiting Certificates" przez wiecej niz 5 minut
Objawy: flyctl certs show ciagle mowi "Awaiting certificates"
Przyczyny:
- Rekordy DNS nie wskazuja prawidlowo na Fly.io
- Proxy Cloudflare ingeruje w walidacje certyfikatu
Naprawa:
# Zweryfikuj ze rekordy DNS sa prawidlowe
dig www.example.com
# Sprawdz czy DNS rozwiazuje sie do Fly.io
nslookup www.example.com
# Jesli zablokowany, usun i ponownie dodaj certyfikat
flyctl certs delete www.example.com -a NAZWA_TWOJEJ_APP
flyctl certs add www.example.com -a NAZWA_TWOJEJ_APPDlaczego oddzielne certyfikaty maja znaczenie
W tradycyjnym hostingu wspoldzielonym, certyfikat SSL typu wildcard (*.example.com) pokrywa wszystkie subdomeny. Ale Fly.io przydziela certyfikaty indywidualnie przez Let's Encrypt.
To daje ci wieksza kontrole ale wymaga jawnej konfiguracji dla kazdej subdomeny:
example.com→ potrzebuje wlasnego certyfikatuwww.example.com→ potrzebuje wlasnego certyfikatuapi.example.com→ potrzebuje wlasnego certyfikatublog.example.com→ potrzebuje wlasnego certyfikatu
Rozumiesz idee.
Najlepsze praktyki dla Fly.io + Cloudflare
- Dodaj certyfikaty dla wszystkich subdomen ktore planujesz uzywac zanim pojdziesz na zywo
- Uzyj trybu "Full" SSL/TLS Cloudflare dla wdrozen Fly.io
- Wlacz proxy Cloudflare (pomaranczowa chmurka) dla CDN i ochrony DDoS
- Testuj zarowno www jak i bez www wersje zanim oglszisz strone
- Skonfiguruj przekierowania w aplikacji jesli chcesz wymusic jedna wersje nad druga
Uzyteczne polecenia do rozwiazywania problemow
# Lista wszystkich certyfikatow dla aplikacji
flyctl certs list -a NAZWA_TWOJEJ_APP
# Pokaz szczegolowe info dla konkretnego certyfikatu
flyctl certs show www.example.com -a NAZWA_TWOJEJ_APP
# Usun certyfikat (jesli musisz zaczac od nowa)
flyctl certs delete www.example.com -a NAZWA_TWOJEJ_APP
# Sprawdz adresy IP aplikacji
flyctl ips list -a NAZWA_TWOJEJ_APP
# Sprawdz rozwiazywanie DNS
dig example.com
dig www.example.com
# Testuj polaczenie SSL z szczegolowym wyjsciem
curl -vI https://www.example.com
# Sprawdz status aplikacji
flyctl status -a NAZWA_TWOJEJ_APP
# Pokaz logi aplikacji (uzyteczne do debugowania)
flyctl logs -a NAZWA_TWOJEJ_APPKompletna lista kontrolna konfiguracji
Uzyj tej listy kontrolnej zeby zweryfikowac ze wszystko jest prawidlowo skonfigurowane:
Certyfikaty Fly.io:
- Certyfikat domeny glownej istnieje i pokazuje "Ready"
- Certyfikat subdomeny www istnieje i pokazuje "Ready"
- Wszystkie inne subdomeny maja dodane certyfikaty
Cloudflare DNS:
- Rekord A lub AAAA dla domeny glownej wskazujacy na IP Fly.io
- Rekord CNAME dla subdomeny www wskazujacy na domene glowna
- Wszystkie rekordy maja wlaczona pomaranczowa chmurke (Proxied)
Cloudflare SSL/TLS:
- Tryb szyfrowania ustawiony na "Full" (nie Flexible ani Full strict)
- Edge Certificates pokazuje wazny SSL
Testowanie:
-
https://example.comzwraca 200 OK -
https://www.example.comzwraca 200 OK - Brak ostrzezen SSL w przegladarce
- Obie domeny pokazuja ikone bezpiecznego zamka
Dlaczego wiekszosc przewodnikow to pomija
Wiekszosc samouczkow wdrazania Fly.io skupia sie na uruchomieniu aplikacji i dodaniu pojedynczej wlasnej domeny. Zakladaja ze bedziesz uzywac tylko example.com lub www.example.com - nie obu.
Ale w rzeczywistosci uzytkownicy wpisuja obie wersje. Wyszukiwarki indeksuja obie. I nie chcesz zeby polowa twojego ruchu trafiala na bledy SSL.
Dodanie certyfikatu www zajmuje 30 sekund ale oszczedza godziny debugowania pozniej.
Podsumowanie
Problem SSL subdomeny www na Fly.io to jeden z tych "gotchas" ktory lapie nawet doswiadczonych programistow. Naprawa jest prosta gdy ja znasz:
- Dodaj oddzielny certyfikat dla www:
flyctl certs add www.example.com -a NAZWA_TWOJEJ_APP - Ustaw Cloudflare SSL/TLS na tryb "Full"
- Poczekaj 1-2 minuty az certyfikat bedzie gotowy
- Przetestuj obie domeny
To wszystko. Bez skomplikowanej konfiguracji, bez restartow serwera, bez edytowania plikow konfiguracyjnych. Tylko jedno polecenie ktore wiekszosc przewodnikow wdrazania zapomina wspomniec.
Teraz twoi uzytkownicy moga wchodzic na strone z lub bez www i obie beda dzialac prawidlowo.
Powiazane przewodniki:
- Kompletny przewodnik: Wdrazanie projektow Lovable na Cloudflare
- Wdroz aplikacje Claude Code & Codex na Cloudflare
- Przewodnik wdrazania Cloudflare Workers
Zasoby:
Fred
AUTHORFull-stack developer with 10+ years building production applications. I've been deploying to Cloudflare's edge network since Workers launched in 2017.
Need a developer who gets it?
POC builds, vibe-coded fixes, and real engineering. Let's talk.
Hire Me →
