VPN připojeno, ale smíšený obsah je stále blokován: co opravit
Seřaďte blokovanou adresu URL podle toho, kdo ji vytvořil, opravte odkaz nebo ji předejte vlastníkovi hostitele, a poté opravu potvrďte v konzoli prohlížeče.
Polovina stránky se vykreslí, jeden stylový list zůstává v panelu Síť zešedlý a klient VPN stále hlásí zdravý tunel. Všechna tři pozorování platí současně, protože prohlížeč posoudil požadavek, který stránka vytvořila, a tunel v tom posouzení neměl žádné slovo. Případ uzavírá rozhodnutí, ne nastavení: opravit odkaz, eskalovat ho na vlastníka hostitele, nebo se závislosti vzdát. Každá z těchto možností má levný test a volba té špatné stojí jeden cyklus podpory.
Proč tunel nemůže pokrýt podřízený zdroj
Smíšený obsah začíná dokumentem HTTPS, který si vyžádá podřízený zdroj přes prostý HTTP. Každá adresa URL se posuzuje podle vlastního schématu, takže ochrana nadřazeného dokumentu se nikdy nerozšíří na podřízený požadavek. Šifrování přidané pod prohlížeč mění to, co jde po drátě, ne http://, které si vyžádalo označení.
Současné prohlížeče dělí tyto požadavky do dvou skupin a zacházejí s nimi odlišně. Skripty, stylové listy, iframy a volání přes fetch, XMLHttpRequest nebo WebSocket se odmítají rovnou, bez jakéhokoli předchozího pokusu o povýšení. Obrázky, zvuk a video se přepisují na https:// a žádají znovu, a načítání se přeruší, když toto zabezpečené načtení selže. Adresa URL podřízeného zdroje, jehož hostitelem je holá IP adresa, je z povyšování vyňata, takže obrázek HTTP na hostiteli IP zůstává blokován, místo aby byl tiše opraven. Rozdělení, včetně této výjimky na povyšitelné straně, je zdokumentováno v průvodci Mozilly ke smíšenému obsahu. Chrome uplatňuje podobné odmítnutí na nezabezpečená stahování zahájená z bezpečné stránky, a proto může odkaz na PDF zemřít, zatímco okolní stránka vypadá nedotčeně.
Zešedlý řádek je tedy důkaz, že kontrola funguje, ne důkaz, že tunel propustil holý text. Berte řádek jako zjištění, které ukazuje na jeden odkaz, a ne na celou stránku.
Určete, komu nezabezpečený odkaz patří
Seřaďte závadnou adresu URL podle toho, kde vzniká, dřív než cokoli změníte. Ta odpověď rozhoduje, zda dnes můžete vydat opravu, zda ji musí vydat dodavatel, nebo zda závislost musí stránku opustit. Přečtěte ji ve sloupci Iniciátor v panelu Síť, protože označení na obrazovce se často skládá za běhu.
| Odkud adresa URL pochází | Kdo ji může opravit | První krok |
|---|---|---|
| Zakódováno natvrdo v šabloně nebo části, kterou nasazujete | Vy | Nahraďte ji tvarem https:// a poté vyprázdněte mezipaměť |
| Vloženo správcem značek nebo balíčkem dodavatele | Dodavatel, s vaším tiketem | Pošlete přesnou adresu URL, typ požadavku a řádek konzole |
| Servírováno pouze na portu 80 bez posluchače TLS | Vlastník hostitele | Požádejte o TLS, postavte před něj něco, co ovládáte, nebo ho opusťte |
Když hostitel už odpovídá na 443 a jen odkaz říká http, je oprava místní: změňte odkaz, vyprázdněte mezipaměť stránky a potvrďte, že se řádek změní na https. Hostitele, který naslouchá jen na portu 80, nelze úpravou uvést do souladu, takže zdroj se přesune, postaví se před něj něco, co ovládáte, nebo zmizí. Adresa URL vložená správcem značek se objevuje dál, i když je vaše šablona čistá, a ten případ patří do tiketu s přesnou adresou URL a řádkem konzole v příloze. Říkat personálu, aby povolil nezabezpečený obsah, není žádná z těchto možností, protože vypíná kontrolu pro každý web, který tento profil prohlížeče navštíví.
Opravte odkaz, ne nastavení prohlížeče
Znovu načtěte selhávající tok se zachovaným síťovým protokolem a přefiltrujte panel podle podezřelého hostitele. Konzole uvádí adresu URL a direktivu, což rozhodne, zda byl požadavek odmítnut, nebo povýšen, než se dotknete šablony.
curl -sSI https://cdn.example.org/vendor.js | head -n 1
curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' -L https://cdn.example.org/vendor.jsDvě podpůrné kontroly stojí za znalost a žádná nenahrazuje opravu. Hlavička Content-Security-Policy s upgrade-insecure-requests přiměje prohlížeč přepsat adresy URL podřízených zdrojů http dřív, než opustí stránku, což zachytí staré odkazy, které jste ještě nenašli. Přepsaný požadavek stále selhává, když cílový hostitel neposkytuje HTTPS, takže hlavička mění jen to, kterou adresu URL prohlížeč zkouší. HSTS platí pro jednotlivé hostitele, což znamená, že zásada na vaší vlastní doméně nic nedělá pro CDN třetí strany, které hlavičku nikdy neposlalo. Po úpravě šablony vyprázdněte mezipaměť stránky a hledejte staré jméno hostitele ve vykresleném HTML, protože stejná adresa URL může přijít i přes část, překladový řetězec nebo pole databáze.
Sledujte i přesměrování, protože řetěz začínající na https:// může přistát v umístění http:// a prohlížeč posuzuje poslední skok. Tvar -L druhého příkazu výše vypíše tu efektivní adresu URL za vás. Pokud je poslední skok čisté http, odkaz je stále špatný, i když upravený odkaz vypadal dobře.
Potvrďte stránku konzolí a panelem sítě
Znovu načtěte s vypnutou mezipamětí a projděte tok znovu, včetně tlačítek, která načítají obsah na vyžádání. První načtení stránky skrývá líné widgety, dlaždice mapy a skripty přehrávače, které se objeví až po kliknutí. Konzole by neměla obsahovat žádné položky smíšeného obsahu a každý řádek, kterého jste se dotkli, by měl ukazovat https. Zachyťte konzoli a řádek požadavku, než tiket zavřete, protože tento stav je po dalším nasazení těžké obnovit.
Když zdroj patří někomu jinému, pošlete čtyři věci: přesnou adresu URL, typ požadavku, text konzole a stránku, kde se objevuje. Skryjte identifikátory relace ve všem, co vložíte do tiketu. Zpráva, která jen říká, že obrázky jsou rozbité, nedává vlastníkovi nic k hledání.
Tunel dál dělá svou práci, zatímco oprava leží v odkazu, který požadavek vytvořil. Po nasazení ještě jednou hledejte jméno hostitele v šabloně a balíčku dodavatele a případ uzavřete teprve tehdy, když v konzoli nezůstane žádná zablokovaná položka smíšeného obsahu.