Установили SSL, а замка нет: смешанный контент и как его убрать
Сертификат установлен, сайт открывается по https, а в адресной строке вместо замка — перечёркнутый значок или предупреждение «не полностью защищено». Клиент видит это и закрывает вкладку. Владелец сайта уверен, что хостер что-то не доделал. На самом деле сертификат в порядке, а проблема в самом сайте.
Что такое смешанный контент
Страница по https загружает десятки файлов: картинки, стили, скрипты, шрифты, видео. Если хотя бы один из них подгружается по обычному http, браузер считает страницу защищённой не полностью. Это и называется смешанным контентом: защищённая страница с незащищёнными частями.
Логика браузера понятна. Скрипт, загруженный без шифрования, можно подменить по дороге, и тогда от защиты всей страницы толку мало. Поэтому Chrome и Safari блокируют такие скрипты вовсе, а незащищённые картинки показывают, но замок убирают.
Откуда он берётся
Сайт годами жил на http, и адреса файлов внутри него написаны полностью, с протоколом. После переезда на https ссылки на сами страницы обновились, а вот адреса картинок в текстах, логотип в шаблоне, стороннее видео и виджеты остались старыми. Типичные источники:
- Картинки в статьях и карточках товаров, вставленные с полным адресом http://.
- Логотип, фон и иконки, прописанные в шаблоне или файле стилей.
- Сторонние виджеты: старые карты, счётчики, кнопки соцсетей, чаты.
- Шрифты и скрипты, подключённые с чужих сайтов по http.
- Адрес сайта в настройках CMS, который так и остался с http — тогда CMS сама генерирует незащищённые ссылки.
Как найти
Откройте проблемную страницу, нажмите F12 и посмотрите вкладку «Консоль». Браузер перечислит каждый незащищённый файл с точным адресом. Так проверяют одну страницу. Для всего сайта есть онлайн-сканеры смешанного контента и десктопные краулеры, которые прогоняют сотни страниц и выдают список.
Полезно проверить не только главную. У одного клиента на главной всё было чисто, а замок пропадал в каталоге: картинки товаров загружались из старой папки по http, потому что их адреса лежали в базе данных.
Как исправить
- В настройках CMS поменяйте адрес сайта на вариант с https. В WordPress это два поля в общих настройках.
- Замените http:// на https:// в базе данных для адресов вашего же домена. Для WordPress есть плагины замены, для других CMS — скрипт или запрос к базе. Обязательно с бэкапом перед заменой.
- Проверьте шаблон и файлы стилей на прописанные адреса.
- Обновите сторонние виджеты: почти все давно работают по https, нужно перевставить актуальный код.
- Настройте редирект с http на https на уровне сервера, чтобы старые ссылки вели на защищённую версию.
- Проверьте сайт заново сканером и в консоли.
Есть и обходной путь: на сервере включается заголовок, который заставляет браузер автоматически заменять http на https во всех запросах. Он спасает от забытых ссылок, но не помогает, если внешний ресурс по https недоступен. Лучше использовать как страховку, а не вместо исправления.
Почему это важно
Кроме доверия посетителей, смешанный контент ломает функциональность: заблокированный скрипт — это неработающая форма или калькулятор. А поисковики считают полноценным https только сайт без предупреждений. Так что переезд на https без чистки смешанного контента — это половина переезда.
Переводя сайты на https, мы в CasperLab всегда прогоняем их сканером и чистим базу, шаблон и виджеты до переключения. Если у вас сертификат стоит, а замка нет, — пришлите адрес, покажем, где именно прячется незащищённый файл.
Выбрать SSL в CasperLab
Поможем подобрать решение под вашу задачу и рассчитаем стоимость без обязательств.
Выбрать SSL