Opowieść po ludzku o pracy Adama Langleya nad TLS i przejściu do domyślnego HTTPS, oraz praktyczne nawyki: automatyczne certyfikaty, nagłówki i plan rotacji.

max-age=31536000; includeSubDomains (dodaj preload tylko gdy jesteś pewien)\n- X-Content-Type-Options: nosniff\n- Referrer-Policy: strict-origin-when-cross-origin\n- X-Frame-Options: DENY (lub SAMEORIGIN jeśli naprawdę potrzebujesz osadzenia)\n- Permissions-Policy: wyłącz to, czego nie używasz (np. kamera, mikrofon, geolokalizacja)\n\nHSTS wymaga ostrożności. Gdy przeglądarka ją zapamięta, użytkownicy będą wymuszeni na HTTPS dla tej domeny aż do wygaśnięcia max‑age. Zanim ją włączysz, potwierdź, że każde przekierowanie prowadzi na HTTPS (bez pętli), wszystkie subdomeny są gotowe na HTTPS jeśli planujesz includeSubDomains, i że certyfikaty pokrywają plan domeny (w tym www i subdomeny API).\n\n### Content Security Policy (CSP) bez psucia aplikacji\n\nCSP jest potężny, ale też najczęściej psuje logowania, strony płatności, analitykę lub osadzone widgety. Wdrażaj go krokami: zacznij od trybu raportowego w stagingu, obserwuj co byłoby zablokowane, potem stopniowo zaostrzaj.\n\nPraktyczny przykład: jeśli Twoja aplikacja ładuje zewnętrzny widget autoryzacyjny i kilka paczek skryptów, surowy CSP może zablokować przepływ autoryzacji i spowodować, że logowanie nie będzie działać tylko na niektórych stronach. Wykryjesz to w stagingu, testując pełną ścieżkę logowania, reset hasła i osadzone treści.\n\nTrzymaj ustawienia nagłówków blisko konfiguracji wdrożeń, w tym samym miejscu, gdzie zarządzasz TLS i domenami. Jeśli używasz platformy takiej jak Koder.ai do wdrożeń pod niestandardową domenę, traktuj nagłówki jako element checklisty wydania, a nie coś ukrytego w kodzie aplikacji.\n\n## Plany rotacji, które się nie rozsypują\n\nPlan rotacji zapobiega temu, że bezpieczeństwo staje się przypomnieniem w kalendarzu, które każdy ignoruje. Pomaga też uniknąć awarii o 2 rano, gdy certyfikat wygasł lub klucz wyciekł.\n\nZacznij od jasnego określenia, co rotujesz. Zespoły często skupiają się na certyfikatach TLS, ale prywatny klucz ma równie duże znaczenie, podobnie jak sekrety aplikacji.\n\nTypowa lista rotacji obejmuje: certyfikaty TLS i ich klucze prywatne, klucze API i sekrety podpisywania webhooków, hasła do baz i kont serwisowych, klucze podpisywania sesji i klucze szyfrujące oraz tokeny stron trzecich (płatności, e‑mail, analityka).\n\nNastępnie ustal właścicielstwo i prosty harmonogram. Wybierz jedną osobę (lub rolę) odpowiedzialną i jednego backupu. Uczyń harmonogram realistycznym: na tyle częsty, by zmniejszyć ryzyko, nie tak częsty, żeby ludzie to pomijali. Tam, gdzie możesz, preferuj krótkotrwałe poświadczenia odnawiane automatycznie i zapisz wyjątki, które nie mogą być krótkotrwałe.\n\nPlan rotacji działa tylko wtedy, gdy możesz udowodnić, że zadziałał. Traktuj każdą rotację jak małe wdrożenie: sprawdź, że nowa wartość jest używana i że stara już nie jest akceptowana.\n\nKrótki runbook pomaga powtarzalności:\n\n- Utwórz nowe poświadczenie i zapisz je w zatwierdzonym systemie sekretów.\n- Wdróż zmianę bezpiecznie (wspierając krótki okres współdziałania starego i nowego).\n- Zweryfikuj rzeczywistą operację (logowanie, wywołanie API, handshake, zapytanie do bazy).\n- Cofnij stare poświadczenie i potwierdź, że nie działa.\n- Zapisz, co zmieniono, dlaczego i kto to zatwierdził.\n\nNa koniec — ćwicz awarie. Złe rotacje się zdarzają: błędny łańcuch certyfikatów, brak pośredniego, literówka w nazwie sekretu. Miej opcję rollbacku, która jest szybka i nudna. Jeśli wdrażasz na platformie wspierającej snapshoty i rollback (jak Koder.ai), ćwicz odtwarzanie ostatniej znanej dobrej wersji i ponowną kontrolę handshake TLS. Ten nawyk zamienia nowoczesne wdrożenie HTTPS z jednorazowej konfiguracji w stabilną rutynę.\n\n## Typowe błędy HTTPS i TLS, które wciąż popełniają zespoły\n\nNawet przy nowoczesnych narzędziach zespoły wciąż potykają się o kilka powtarzających się problemów. Większość to nie „trudne problemy kryptograficzne”, a codzienne nawyki, które zmieniają bezpieczną konfigurację w kruchą.\n\nMixed content to klasyczny przykład: strona ładuje się przez HTTPS, ale skrypt, obraz, czcionka lub tag analityczny nadal przychodzą przez HTTP. Przeglądarki mogą to zablokować, albo — co gorsza — załadować i stworzyć okno do manipulacji. Szybkie sprawdzenie w konsoli przeglądarki i przeszukanie osadzonych zasobów trzecich wykrywa to wcześnie.\n\nInna cicha porażka to wyłączenie weryfikacji certyfikatów w klientach „tylko na chwilę”, by zrobić test środowiska. Tymczasowa flaga często trafia do produkcji w mobilnym buildzie lub usłudze tła. Jeśli musisz testować, napraw drzewo zaufania poprawnie (odpowiednia nazwa hosta, ważny certyfikat, poprawne ustawienie czasu) i traktuj weryfikację jako niepodlegającą negocjacji.\n\nWygaśnięcie certyfikatu wciąż się zdarza, bo odnawianie jest zautomatyzowane, ale nie monitorowane. Automatyzacja potrzebuje backstopu: alertów gdy odnawianie zawiedzie i prostej metody zobaczenia dni‑do‑wygaśnięcia dla każdej domeny.\n\nUważaj na zbyt rygorystyczne polityki jak HSTS. Włączenie jej za wcześnie może zablokować użytkowników, jeśli źle skonfigurujesz subdomenę lub zepsujesz certyfikat. Wdrażaj stopniowo: zacznij od krótkiego max‑age i potwierdź plan awaryjny.\n\nNa koniec unikaj używania jednego wildcardowego certyfikatu wszędzie. Jeśli wycieknie lub trzeba go natychmiast wymienić, wszystko przestaje działać naraz. Bezpieczniejszy domyślny wybór to oddzielne certyfikaty według aplikacji lub środowiska.\n\nJeśli eksportujesz i wdrażasz nową aplikację z Koder.ai na niestandardowej domenie, zachowaj tę samą dyscyplinę: potwierdź, że zasoby stron trzecich są po HTTPS, nie wyłączaj weryfikacji klienta i ustaw alerty, aby odnawiania i zamiany nie zaskakiwały Cię.\HTTP przesyła dane w formie, którą mogą przeczytać lub zmodyfikować wszyscy pośrednicy (publiczne Wi‑Fi, routery, proxy, operatorzy). HTTPS dodaje szyfrowanie i integralność, dzięki czemu loginy, ciasteczka, formularze i pliki nie mogą być swobodnie przechwycone ani zmienione.
Pasywny atakujący może ukraść ciasteczka sesyjne i przejąć konta. Aktywny atakujący może wstrzyknąć lub podmienić treść (fałszywe pola logowania, zamienione pliki do pobrania, przekierowania płatności, niechciane reklamy). Groźne jest to, że skanery automatycznie wyszukują strony HTTP na dużą skalę.
Uprość to tak:\n\n- Używaj TLS 1.3 (a TLS 1.2 tylko gdy naprawdę trzeba ze względów kompatybilności).\n- Wyłącz przestarzałe protokoły i słabe szyfry.\n- Upewnij się, że serwer wysyła prawidłowy pełny łańcuch certyfikatów.\n\nWiększość zespołów powinna wybierać „bezpieczne domyślne” ustawienia zamiast ręcznego dopracowywania kryptografii.
Forward secrecy oznacza, że nawet jeśli ktoś ukradnie prywatny klucz serwera później, to nie będzie mógł odszyfrować nagranej wcześniej komunikacji. Redukuje to szkody po wycieku klucza, bo minione sesje nie stają się automatycznie odszyfrowalne.
Certificate Transparency sprawia, że wystawianie certyfikatów jest bardziej widoczne, co ułatwia wykrycie błędnie wystawionych lub złośliwych certyfikatów dla Twojej domeny. Praktycznie poprawia to monitoring i odpowiedzialność w ekosystemie certyfikatów, nawet jeśli sam nie przeglądasz logów na co dzień.
Domyślny wybór: HTTP-01 jeśli panujesz nad portem 80 i routowaniem i chcesz najprostszej konfiguracji.\n\nUżyj DNS-01 gdy potrzebujesz certyfikatów wildcard (*.example.com), nie możesz otworzyć portu 80 lub masz złożone routowanie brzegowe. DNS-01 jest świetny, ale tylko jeśli możesz zautomatyzować aktualizacje DNS.
Przynajmniej monitoruj:\n\n- Dni do wygaśnięcia certyfikatu (alerty na 30/7/1 dnia)\n- Błędy odnowienia (alert natychmiastowy)\n- Błędy handshake TLS (skoki mogą oznaczać problemy z łańcuchem lub konfiguracją)\n- Pętle przekierowań i zachowanie HTTP→HTTPS (często łamią loginy)\n\nAutomatyzacja bez alertów i tak zawiedzie, zanim użytkownicy zaczną narzekać.
Zacznij od zestawu, który rzadko powoduje problemy:\n\n- Strict-Transport-Security (najpierw ustaw krótkie max-age)\n- X-Content-Type-Options: nosniff\n- Referrer-Policy: strict-origin-when-cross-origin\n- X-Frame-Options: DENY (lub SAMEORIGIN jeśli konieczne)\n- Permissions-Policy aby wyłączyć nieużywane funkcje\n\nDodawaj HSTS stopniowo, żeby nie zablokować użytkowników w wyniku błędu na subdomenie lub certyfikacie.
Wprowadzaj CSP krokami:\n\n- Zacznij od trybu report-only na stagingu.\n- Przetestuj pełną ścieżkę: logowanie, reset hasła, checkout, osadzone widgety.\n- Stopniowo zaostrzaj zasady aż będziesz mógł usunąć tryb report-only.\n\nCSP najczęściej łamie aplikacje z powodu zewnętrznych skryptów, widgetów autoryzacyjnych i inline’owych skryptów, które nie były wcześniej uwzględnione.
Traktuj rotację jako małe wdrożenie:\n\n- Wygeneruj nowy certyfikat/klucz i zapisz go w zatwierdzonym systemie sekretów.\n- Wdróż z krótkim nakładaniem, gdzie stary i nowy działają równocześnie.\n- Zweryfikuj prawdziwą operację (handshake, logowanie, wywołanie API).\n- Cofnij dostęp starego i potwierdź, że nie działa.\n\nJeśli wdrażasz na platformie takiej jak Koder.ai, użyj Planning Mode do przygotowania zmian i snapshotów/rollback aby szybko cofnąć problemy z łańcuchem lub nagłówkami.