HTTPS/SSL и безопасность сайта
Что такое HTTPS/SSL?
HTTPS (HTTP Secure) — это протокол, который шифрует обмен данными между веб-сайтом и браузером посетителя. Это шифрование обеспечивается с помощью SSL/TLS-сертификата, которым обладает сайт; сертификат действует как цифровой документ, подтверждающий браузеру подлинность сайта. Значок замка в адресной строке браузера указывает на то, что соединение зашифровано и сертификат действителен.
Данные, отправляемые по протоколу HTTP, передаются в виде открытого текста (plaintext); это означает, что третье лицо, находящееся в той же сети (например, в общедоступной сети Wi-Fi), может прочитать эти данные. HTTPS шифрует эти данные, делая их доступными для чтения только отправителю и получателю.
SSL-сертификаты обычно действительны в течение определённого срока (например, одного года) и по истечении срока действия их необходимо продлевать; в настоящее время многие хостинг-провайдеры автоматизировали этот процесс, обеспечивая автоматическое продление сертификата, что снижает необходимость ручного контроля.
Почему это важно?
HTTPS обеспечивает защиту пользовательских данных (данные, введенные в формы, данные сеанса, платежные данные) от атак типа «человек посередине» (man-in-the-middle). Google рассматривает использование HTTPS как незначительный фактор ранжирования, а браузеры отображают предупреждение «Небезопасно» для сайтов, использующих HTTP; это напрямую влияет на доверие пользователей.
Небезопасный сайт снижает желание посетителей оставаться на сайте; в частности, пользователи, заполняющие формы или осуществляющие оплату, могут покинуть сайт, не завершив операцию, если увидят предупреждение «Небезопасно». Это является проблемой доверия, которая напрямую влияет на коэффициент конверсии.
Кроме того, большинство современных функций браузеров (например, службы определения местоположения, уведомления, некоторые платежные API) работают только через HTTPS; сайт, остающийся на HTTP, не может воспользоваться этими функциями и с технической точки зрения становится всё более ограниченным.
Как это исправить?
- Установите на свой сайт действующий SSL-сертификат и настройте автоматическое обновление, чтобы предотвратить его истечение.
- Перенаправляйте все HTTP-запросы на HTTPS-версию с помощью перенаправления 301.
- Устраните предупреждения о смешанном контенте (mixed content): убедитесь, что все изображения, скрипты и CSS-файлы на странице загружаются по HTTPS; в противном случае браузер может пометить страницу как «частично безопасную».
- По возможности добавьте заголовок HSTS (HTTP Strict Transport Security), чтобы браузер всегда подключался к сайту только по HTTPS.
- Сократите цепочки перенаправлений (например, HTTP → HTTPS → www → non-www — последовательность нескольких перенаправлений) до одного шага; каждое дополнительное перенаправление добавляет небольшую задержку к времени загрузки страницы.
- Убедитесь, что ресурсы, предоставляемые сторонними сервисами (например, CDN для изображений, поставщики форм, виджеты чата), также предоставляются по HTTPS; они часто являются незамеченным источником проблемы смешанного контента.
Пример
# пример .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Плохой пример: после перехода на HTTPS забыть обновить старые <img src="http://example.com/logo.png"> абсолютные HTTP-ссылки на странице; это приводит к появлению предупреждения о смешанном контенте в браузере, даже если страница в целом выглядит безопасной.
Распространённые ошибки
- Оставить версию HTTP включенной вместо того, чтобы отключить её; таким образом сайт остаётся доступным как по HTTP, так и по HTTPS, а контент дублируется на двух разных адресах.
- Оставить на странице изображения или скрипты, которые по-прежнему загружаются по HTTP, хотя страница работает по HTTPS (смешанное содержимое).
- Не продлить срок действия SSL-сертификата; в этом случае браузер может показать, что сайт полностью недоступен.
- Создание ненужных цепочек перенаправлений, состоящих из нескольких шагов.
- Получение сертификата только для основного домена и исключение субдоменов (например, blog.example.com) из зоны действия сертификата.
- Продолжение использования старых HTTP-адресов во внутренних ссылках (меню, нижний колонтитул, внутренние ссылки); это вызывает ненужное перенаправление 301 при каждом клике и слегка замедляет загрузку страницы.
- По-прежнему указывать старые HTTP-адреса в файле Sitemap и тегах canonical; это посылает поисковой системе противоречивые сигналы.
- Непреднамеренный перенос самоподписанного сертификата, используемого в локальной среде разработки (localhost), в конфигурацию производственной среды; браузеры не считают такие сертификаты надежными.
- Отчет Seoraporu.co в разделе «Технические выводы» в первую очередь отмечает отсутствие HTTPS или предупреждения о смешанном контенте, поскольку это одновременно влияет на доверие и производительность.