Proč prohlížeč hlásí „nezabezpečený web“, i když máte certifikát?
Web běží na HTTPS, ale prohlížeč přesto varuje. Nejčastější příčinou je smíšený obsah – prvky načítané přes http://. Jak je najít a opravit.
4 minuty čtení 10 kroků
Obsah návodu
Certifikát máte vystavený, stránky běží na adrese https://, a přesto prohlížeč zobrazuje varování „Nezabezpečeno“, přeškrtnutý zámek nebo zámek s výstražným trojúhelníkem. Nejčastější příčinou není chyba certifikátu, ale takzvaný smíšený obsah (anglicky mixed content): stránka se sice načte přes HTTPS, ale některé její části se stahují přes nezabezpečené http://.
Co je smíšený obsah
Webová stránka se skládá z desítek souborů – obrázků, stylů, skriptů, písem. Pokud se byť jediný z nich načítá přes http://, prohlížeč nemůže zaručit, že celá stránka je zabezpečená, a proto zámek odebere. Rozlišují se dva typy:
- Pasivní obsah (obrázky, videa, zvuk) – prohlížeč jej většinou načte, ale zobrazí varování.
- Aktivní obsah (skripty, styly, vložené rámy) – moderní prohlížeče jej rovnou zablokují. Web se pak může zobrazit rozbitě nebo přestane fungovat část jeho funkcí.
Jak smíšený obsah najít
- Otevřete stránku v prohlížeči Chrome, Edge nebo Firefox a stiskněte klávesu F12. Otevře se panel vývojářských nástrojů.
- Přepněte na záložku Konzole (Console) a stránku znovu načtěte.
- Hledejte hlášky začínající
Mixed Content: The page at 'https://…' was loaded over HTTPS, but requested an insecure …. Za textem je vždy uvedena přesná adresa problémového souboru. - Klikněte na ikonu zámku (nebo varování) vlevo v adresním řádku. Prohlížeč zde stručně uvede, že některé části stránky nejsou zabezpečené.
- Zkontrolujte více různých stránek webu – úvodní stránku, detail článku či produktu, kontaktní formulář. Problémový prvek nemusí být všude.
Typické příčiny
- Adresy
http://zadané natvrdo v šabloně webu (soubory jakoheader.php,footer.php, vlastní HTML). - Adresy obrázků uložené v databázi – u WordPressu jde hlavně o obrázky vložené do textu příspěvků a stránek a o nastavení adresy webu.
- Externí skripty, písma nebo počítadla vložené s adresou
http://. - Obrázky na pozadí v CSS souborech, například
background: url(http://…).
Jak smíšený obsah odstranit
- Používejte relativní adresy. Místo
http://www.vasedomena.cz/obrazky/logo.pngzapište jen/obrazky/logo.png. Taková adresa převezme protokol, kterým se načetla stránka, a funguje na HTTP i HTTPS. - Hromadně nahraďte adresy v databázi. U redakčních systémů je většina odkazů uložená v databázi. Jak nahradit
http://vasedomena.czzahttps://vasedomena.cznajednou, popisuje návod Jak hromadně nahradit text v databázi. Před zásahem si databázi zálohujte (Jak exportovat databázi?). - U WordPressu zkontrolujte v menu Nastavení → Obecné, že pole Adresa WordPressu i Adresa webu začínají
https://. Zbývající adresy dokáže za běhu přepsat například plugin Really Simple SSL; jde ale o náhradu, ne o opravu příčiny. - Opravte externí zdroje. Skripty a písma z cizích serverů načítejte přes
https://. Pokud poskytovatel HTTPS nenabízí, zdroj odstraňte nebo nahraďte jiným. - Vynuťte HTTPS. Aby se web vždy otevíral zabezpečeně, nastavte přesměrování podle návodu Jak vynutit HTTPS a přesměrování www pomocí .htaccess.
Po úpravách vymažte cache redakčního systému i prohlížeče a stránku otevřete v anonymním okně. Prohlížeč si totiž může pamatovat starou verzi stránky.
Řešení problémů
- Prohlížeč hlásí chybu certifikátu, ne smíšený obsah. Hlášky jako
NET::ERR_CERT_DATE_INVALIDnebo „Vaše připojení není soukromé“ znamenají problém s certifikátem samotným. Pokud certifikát ještě nemáte, postupujte podle návodu Jak získat certifikát pro stránky a HTTPS?. - Konzole je čistá, ale zámek stále chybí. Zkuste jinou stránku webu nebo jiný prohlížeč; chyba může být jen v části webu, kterou jste ještě neotevřeli.
- Nevíte si rady. Napište na podporu a uveďte adresu konkrétní stránky, na které varování vidíte.