Przeglądarka, która najpierw wpisuje http://, a po przekierowaniu trafia na https://, wysłała już jedno żądanie w sposób jawny, a VPN tego nie zmienia. Tunel chroni nogę od klienta do węzła wyjściowego; nie szyfruje niczego powyżej warstwy transportowej, więc obserwator pomiędzy wyjściem a początkiem nadal widzi przeskok w postaci zwykłego tekstu. Uczynienie HTTPS pierwszym żądaniem to zmiana po stronie klienta składająca się z trzech części: prawdziwego adresu HTTPS, trybu aktualizacji przeglądarki i własnej polityki witryny. Poniższe kroki przedstawiają kolejność, w jakiej stosuję, każdy z zaznaczeniem informującym, czy zostało to wykonane.

Krok 1: potwierdź, jakie właściwie jest pierwsze żądanie

Zanim cokolwiek zmienisz, sprawdź, co wysyła przeglądarka. Otwórz panel sieciowy ze stroną ponownie załadowaną z zimnej pamięci podręcznej i przeczytaj pierwszy wiersz: jeśli schemat to http i status to 301 lub 308, wszystko po tym wierszu jest drugim żądaniem. curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.com odtwarza tę samą sekwencję poza przeglądarką i drukuje adres URL, na którym skończyłeś.

Możliwe są dwa wyniki i wymagają różnych poprawek. Jeśli witryna obsługuje protokół HTTPS na tym samym hoście, rozwiązaniem jest zaprzestanie publikowania formularza HTTP: zaktualizuj zakładkę, łącze wiki, skrót na pulpicie i szablon wiadomości e-mail, którą użytkownicy klikają. Jeśli witryna w ogóle nie obsługuje protokołu HTTPS, żadne ustawienia przeglądarki nie utworzą jej, a szczera odpowiedź jest taka, że problemem jest miejsce docelowe. Nie zamazuj drugiego przypadku z wyjątkiem, ponieważ wyjątek dotyczący certyfikatu na stronie konta przekształca problem z transportem w problem z poświadczeniami. Zanim dotkniesz ustawienia, zapisz, w jakim przypadku się znajdujesz.

Krok 2: włącz tryb przeglądarki tylko HTTPS

Tryb aktualizacji to druga część i tryby nie są wymienne. Sprawdź, co robi Twój, zanim go włączysz: aktualizacja w trybie cichym, aktualizacja z ostrzeżeniem lub odmowa załadowania.

W przeglądarce Firefox elementy sterujące znajdują się za about:config i na stronie ustawień prywatności, z dom.security.https_only_mode jako przełącznikiem i wyjątkami dla poszczególnych witryn zarządzanymi z menu kłódki. W Chrome i Edge ten sam pomysł znajduje się w Ustawieniach, Prywatność i bezpieczeństwo, Bezpieczeństwo, oznaczony jako Zawsze używaj bezpiecznych połączeń. Niezależnie od etykiety, sprawdź zachowanie w stosunku do hosta, który odpowiada tylko na porcie 80, ponieważ tryb, w którym następuje aktualizacja, a następnie dyskretny powrót do stanu poprzedniego, nie jest ochroną, o której myślisz, że została włączona. W dokumentacji przeglądarki Firefox dotyczącej wyłącznie protokołu HTTPS opisano sposób aktualizacji, ostrzeżenia i wyjątki dla tej przeglądarki.

Krok 3: napraw zasoby, a nie tylko pasek adresu

Jeśli aktualizacja nie powiedzie się, zamiast paska adresu przeczytaj dokładny błąd. Host bez odbiornika HTTPS, nazwa hosta niezgodna z certyfikatem i wygasły łańcuch generują różne komunikaty i należą do różnych właścicieli. Tylko pierwsza to luka po stronie serwera; druga to zazwyczaj zakładka, która nigdy nie była aktualizowana; trzeci to problem z odnowieniem, dla którego połączenie VPN nie ma znaczenia.

Nie dodawaj wyjątku certyfikatu do witryny konta, ponieważ sieć VPN jest włączona. Wyjątek wyłącza kontrolę, która wyłapałaby dokładnie to przechwytywanie, któremu VPN ma zapobiegać.

Trzecia część znajduje się na stronie i to właśnie za nią ludzie tęsknią. Strona ładowana przez HTTPS może nadal pobierać obrazy, czcionki lub skrypty z adresu URL http, a przeglądarka albo je zablokuje, albo obniży wskaźnik bezpieczeństwa całej strony. Sprawdź nieudane żądania w panelu sieciowym i napraw odniesienia do zasobów u ich właściciela, zamiast zakładać, że pasek adresu opisuje każde żądanie. Na stronie, którą prowadzisz, oznacza to poprawienie zapisanych adresów URL w CMS-ie lub szablonie, zamiast przepisywania ich w przeglądarce. Jeśli nie możesz zmienić źródła, zapisz zmieszaną treść jako znaną lukę, ponieważ kłódka na stronie pobierającej zasoby w postaci zwykłego tekstu jest fałszywym sygnałem.

Krok 4: co HSTS dodaje, a czego nie

HSTS to polityka witryny, a nie preferencje przeglądarki i jest to jedyny mechanizm, który przetrwa wpisanie http:// w nowym profilu. Gdy przeglądarka zobaczy nagłówek Strict-Transport-Security dla hosta, przepisuje późniejsze żądania na https przed ich wysłaniem, czyli jest to dokładnie ta właściwość, której szukasz. Nie robi nic w przypadku hosta, którego przeglądarka nigdy nie odwiedziła, ani nic w przypadku innej nazwy hosta obsługującej tę samą aplikację.

Sprawdź, co wysyła nadawca za pomocą curl -sSI https://example.com | grep -i strict-transport-security. Brakujący nagłówek oznacza zmianę serwera, a nie coś, co klient może zainstalować. Jeśli jest obecny, przeczytaj max-age i czy ustawiono includeSubDomains, ponieważ między wizytami upływa krótki maksymalny wiek, a brakująca domena includeSubDomains pozostawia każdą subdomenę bez ochrony. RFC 6797 definiuje, w jaki sposób agent użytkownika stosuje zasady i co może zignorować. Wstępne ładowanie to osobne zobowiązanie, więc sprawdź status za pomocą interfejsu API hstspreload.org, zanim obiecasz komukolwiek, że domena znajduje się na liście.

Weryfikacja i wycofanie

Przywracanie zmian jest tanie w przypadku ustawień klienta i kosztowne w przypadku HSTS. Wyłączenie trybu tylko HTTPS natychmiast przywraca poprzednie zachowanie; długi maksymalny wiek nie, a odwiedzający, którzy już go otrzymali, kontynuują aktualizację aż do jego wygaśnięcia.

Więc sprawdź kolejność, zanim uznasz to za zakończone. Załaduj ponownie z zimnej pamięci podręcznej i potwierdź, że pierwsze żądanie w panelu sieciowym to https bez poprzedzającego przekierowania. Następnie sprawdź subdomenę, ponieważ includeSubDomains to miejsce, w którym te zasady zwykle okazują się węższe, niż zakładano. Następnie sprawdź jedną stronę, która pobiera zasoby stron trzecich, ponieważ mieszana treść to awaria, która przetrwa każdą inną poprawkę.

Jeśli po tym wszystkim pierwszym żądaniem nadal jest http, klient nie jest już zmienną: jest nią link, który ludzie klikają. Wyszukaj w kontrolowanych przez siebie miejscach formę http nazwy hosta, zaktualizuj je i przetestuj ponownie, korzystając z tego samego ponownego ładowania zimnej pamięci podręcznej. Oddziel pytanie dotyczące VPN, ponieważ tunel zmienia to, kto może zobaczyć żądanie i nigdy nie zmienia tego, czy żądanie jest zaszyfrowane. Wiersz, który należy umieścić w zgłoszeniu jest taki, że liczy się pierwsze żądanie, a przekierowanie jest jedynie potwierdzeniem żądania już wysłanego.

Powiązane artykuły