Google SEO Продвинутый

HTTPS для собственного сайта: SSL-сертификат, HSTS и исправление смешанного контента

Установка SSL-сертификата — это лишь 30% работы по настройке HTTPS. Грамотная конфигурация проходит три проверки: бесплатный ECDSA-сертификат Let's Encrypt с автопродлением каждые 90 дней и уведомлением за 15 дней до истечения;...

独立站HTTPS配置:证书、HSTS与混合内容三层检查HTTPS hardening: certs, HSTS and mixed-content in three layers 证书装了不等于HTTPS合格 —— HSTS不加、混合内容不洗完,浏览器照样打红色警告A cert alone is not HTTPS-ready — without HSTS and mixed-content cleanup the browser still flags it 层Layer 关键动作Key action 量化门槛Quantitative bar 1 证书1. Cert ECDSA P-256 · 90天自动续期ECDSA P-256, 90-day auto-renew 剩余有效期 ≥ 15 天告警Alert if ≤ 15 days left 2 HSTS2. HSTS max-age ≥ 31536000 · 预加载max-age ≥ 31536000, preload 先 5 分钟观察再升 1 年Start 5 min, ramp to 1 year 3 混合内容3. Mixed content 自动升级 · CSP升级Upgrade-insecure-requests 反直觉判断:HSTS不是加得越快越好,第一次直接上一年期会把测试环境锁死Counter-intuitive: ramping HSTS too hard locks your staging out for a year 正确节奏:先 max-age=300 跑 1 周,再升到 86400 跑 1 个月,最后才上 31536000 + preloadRamp 300s for 1 week, 86400s for 1 month, then 31536000 + preload 红线:HTTP 80端口必须 301 跳 HTTPS,不能保留可访问的 HTTP 页面Red line: port 80 must 301 to HTTPS — no reachable HTTP pages left 否则搜索引擎会把 http 和 https 当成两份内容,分散权重并触发重复内容判定Otherwise search engines split signals across two versions and flag duplicates 验收:SSL Labs 评级 A 以上 · 浏览器地址栏无警告 · 全站 mixed content 0 条Pass criteria: SSL Labs A+ · no browser warnings · zero mixed-content hits 每月跑一次 SSL Server Test,证书到期前 15 天必须有人收到告警Re-run SSL Server Test monthly; alert 15 days before expiry
Три уровня проверки HTTPS: автопродление сертификата, поэтапное включение HSTS, автоматическая очистка смешанного контента

HTTPS для собственного сайта: SSL-сертификат, HSTS и исправление смешанного контента

Сначала вывод: Установка SSL-сертификата — это лишь 30% работы по настройке HTTPS. Грамотная конфигурация проходит три проверки: бесплатный ECDSA-сертификат Let’s Encrypt с автопродлением каждые 90 дней и уведомлением за 15 дней до истечения; HSTS включается поэтапно — 300 секунд, затем 86400 секунд, затем 31536000 секунд, и только после этого добавляется preload; смешанный контент автоматически обновляется до HTTPS через заголовок CSP upgrade-insecure-requests, а затем вручную удаляются оставшиеся жёстко прописанные http:// в <img>, <script> и встроенных стилях. Настройка считается успешной только при рейтинге A и выше в SSL Labs.

1. Выбор сертификата и автопродление: не покупайте OV-сертификат и не продлевайте вручную

Многие в первый год покупают платный SSL-сертификат, на второй год забывают продлить и получают красное предупреждение в браузере. Контринтуитивный вывод: для подавляющего большинства B2B-сайтов бесплатного DV-сертификата Let’s Encrypt вполне достаточно — он даёт и OCSP stapling, и рейтинг A+. Наличие названия компании в платном OV-сертификате не оказывает измеримого влияния на конверсию.

При выборе сертификата есть только два жёстких критерия: первый — алгоритм ключа, выбирайте ECDSA P-256, а не RSA 2048: рукопожатие на 40% меньше, первая загрузка на мобильных быстрее примерно на 80 миллисекунд; второй — способ продления, обязательно используйте certbot или acme.sh для автопродления, crontab проверяет раз в день, и никогда не продлевайте вручную. 90% инцидентов с истёкшими сертификатами происходит из-за увольнения ответственного или простой забывчивости.

Тип сертификата Годовая стоимость Отображение в браузере Для чего подходит Рекомендация
Let’s Encrypt DV ECDSA 0 ₽ Замок безопасности, без названия компании Подавляющее большинство B2B-сайтов Выбор по умолчанию, автопродление
Let’s Encrypt DV RSA 0 ₽ Замок безопасности, без названия компании Нужна совместимость со старыми устройствами Только при наличии трафика из IE11
Платный OV-сертификат 2000–8000 юаней в год Зелёное название компании Финансы, платежи, высокий средний чек Покупать только при необходимости
Платный EV-сертификат 5000–20000 юаней в год Метка EV (в большинстве браузеров отменена) Практически нет сценариев Не рекомендуется

Пример: SaaS-компания из Ханчжоу выходит на зарубежный рынок, получает сертификат Let’s Encrypt через acme.sh и прописывает в crontab строку 0 3 * * 1 /root/.acme.sh/acme.sh –renew -d example.com — автоматическая проверка и продление каждый понедельник в 3 часа ночи. Параллельно добавляется правило мониторинга: если до истечения сертификата осталось меньше 15 дней, отправляется уведомление в WeCom. Такая конфигурация настраивается один раз и не требует внимания два года.

Как работать с мультидоменными и wildcard-сертификатами, и Глобальное ускорение CDN Стратегию сертификатов для узлов нужно планировать вместе. CDN-провайдеры обычно предоставляют собственные edge-сертификаты; сертификаты origin и edge нужно управлять раздельно и не допускать, чтобы продление edge-сертификата зависело от origin.

2. HSTS: включайте поэтапно, не переходите сразу к максимуму

HSTS (HTTP Strict Transport Security) — это заголовок ответа, который заставляет браузер работать только по HTTPS. Контринтуитивность в том, что чем больше max-age, тем безопаснее, но и тем опаснее. Если сразу поставить max-age=31536000, ваши тестовые среды, staging-поддомены и внутренние админки год не смогут открываться по HTTP, а любая проблема с сертификатом положит весь сайт.

Правильный график перехода — три ступени: первая неделя max-age=300 (5 минут), следим за жалобами пользователей и сбоями; со второй по четвёртую неделю max-age=86400 (1 день), убеждаемся, что всё в порядке; и только через месяц поднимаем до max-age=31536000 (1 год) и добавляем includeSubDomains. В preload-список отправлять ещё позже — рекомендуем после 3 месяцев стабильной работы подать заявку в chromium preload.

Этап Как прописать заголовок HSTS Период наблюдения Риски
Первый уровень Strict-Transport-Security: max-age=300 1 неделя Риска почти нет, можно откатить в любой момент
Второй уровень max-age=86400 1 месяц Отдельные старые браузеры могут не поддерживать
Третий уровень max-age=31536000; includeSubDomains 3 месяца Все поддомены должны быть готовы к HTTPS
Финальная ступень Добавить директиву preload и отправить заявку на hstspreload.org Долгосрочный После отправки убрать почти невозможно

Пример из практики: сайт промышленного оборудования для экспорта, основной домен example.com работает по HTTPS, а legacy.example.com — всё ещё по HTTP. Если сразу включить includeSubDomains, пользователи legacy-поддомена окажутся заблокированы. Правильно сначала перевести все поддомены на HTTPS, а затем постепенно довести HSTS основного домена до годового срока. Список поддоменов виден в отчёте SSL Labs.

HSTS и Комплаенс-основа для выхода на зарубежные рынки требования к защите передачи данных совпадают: HSTS — самое прямое техническое решение для шифрования персональных данных по GDPR.

Три. Смешанное содержимое: автоматическое обновление плюс ручная чистка

Смешанное содержимое — это ресурсы, загружаемые по протоколу http:// на HTTPS-странице. Оно делится на два типа: пассивное (изображения, видео, шрифты) браузер блокирует автоматически, но без ошибки; активное (<script>, <iframe>, fetch, XHR) сразу подсвечивает страницу красным, браузер отказывается его загружать, и функциональность ломается.

Исправление в два шага. Первый — добавить заголовок ответа Content-Security-Policy: upgrade-insecure-requests;, браузер сам заменит все запросы http:// на https://, это решает 80% проблем. Второй — прогнать страницу через панель Console в Chrome DevTools и вычистить оставшиеся жёстко прописанные http:// из кода и базы данных, особенно siteurl и home в таблице wp_options WordPress, а также старые данные вида <img src=”http://…”> в архивных статьях.

Тип смешанного содержимого Поведение браузера Приоритет исправления Способ исправления
http://<script>或<iframe> Блокируется сразу, страница выдаёт ошибку P0, исправлять немедленно Заменить адрес источника на https или перейти на CDN
Запросы http:// XHR/fetch Ошибка в консоли, функциональность не работает P0, исправлять немедленно В коде заменить на относительный протокол или https
http://<img> изображения Некоторые браузеры обновляют автоматически P1, исправить в течение недели Подстраховка через upgrade-insecure-requests
http:// шрифты или фоновые изображения в CSS Тихий сбой, стили пропадают P1, исправить в течение недели Заменить ссылки на https через CDN
Ссылки http:// в <a href> Редирект на HTTP: без ошибок, но с утечкой P2, чистить раз в месяц Массовая замена в sitemap

Самая частая проблема на WordPress — жёстко прописанные ссылки http:// на изображения в старых статьях. Не делайте массовую замену прямо в базе через SQL — сначала сделайте бэкап, а затем используйте Search Replace DB для безопасной замены с учётом сериализации, иначе повредите сериализованные данные PHP. Как сделать бэкап, см.Бэкап и восстановление сайта.

Очистка смешанного контента и Оптимизация Core Web Vitals работают в связке: заблокированные скрипты тормозят LCP, а отклонённые изображения вызывают CLS. После очистки смешанного контента эти два показателя обычно улучшаются сами.

Четыре. Чек-лист приёмки и ежемесячный аудит

Настройка HTTPS — это не разовая акция при запуске. Сертификаты истекают, добавляются поддомены, в старый контент снова попадают ссылки http. Нужна таблица ежемесячного аудита: запускайте её раз в месяц, это занимает 5–10 минут.

Что проверить Инструмент / метод Критерий Что делать, если проверка не пройдена
Оценка SSL Labs ssllabs.com/ssltest A или A+ Настроить TLS, отключить устаревшие протоколы
Остаток срока действия сертификата openssl s_client ≥15 дней Сразу запустить продление
Редирект HTTP на HTTPS curl -I http://example.com 301 на https Добавить правила rewrite
Наличие заголовка HSTS curl -I, проверить заголовки ответа max-age≥86400 Добавить настройку заголовка
Количество смешанного контента Консоль Chrome DevTools 0 Найти и заменить жёстко прописанный http
Версия TLS Отчёт SSL Labs Только TLS 1.2/1.3 Отключить TLS 1.0/1.1

Как автоматизировать аудит, см.Мониторинг сайта и оповещения в разделах о мониторинге истечения сертификатов и доступности. После взлома настройка HTTPS часто ломается, процесс очистки см.Очистка и повторная индексация сайта после взлома.

Контринтуитивное напоминание: не спешите отправлять домен в HSTS preload. Как только ваш домен попадёт во встроенный список preload в браузерах, для его удаления придётся проходить отдельную процедуру, и ещё несколько месяцев браузеры старых пользователей будут принудительно использовать HTTPS. Если вы всё ещё часто меняете поддомены и тестовые окружения, отложите preload минимум до полугода стабильной работы основного сайта.

FAQ: частые вопросы

Хватит ли бесплатного сертификата Let’s Encrypt или стоит купить платный OV?
Для подавляющего большинства B2B-сайтов его вполне достаточно. Let’s Encrypt выдаёт бесплатный DV-сертификат на 90 дней, поддерживает ECDSA и RSA, после автообновления не требует обслуживания, а оценка SSL Labs тоже может быть A или A+. Платный OV-сертификат добавляет отображение названия компании в адресной строке браузера, но измеримого роста конверсии у B2B-покупателей это не даёт. OV стоит рассматривать только в финансах, платежах и сценариях с высокой стоимостью клиента и требованиями к соответствию. EV-сертификаты в Chrome и Firefox уже не показывают название компании, так что покупать их тем более незачем.
Можно ли сразу поставить HSTS с max-age=31536000?
Нет, это самая распространённая ошибка в настройке. Если сразу поставить год, вы на год заблокируете HTTPS для всех поддоменов, тестовых сред и админки. Если с сертификатом что-то случится или какой-то поддомен ещё не настроен на HTTPS, пользователи не смогут зайти на сайт. Правильный порядок: сначала max-age=300 на неделю, потом 86400 на месяц, и только затем 31536000 с includeSubDomains. В preload-список подавать ещё позже — после трёх месяцев стабильной работы.
Как массово исправить смешанный контент, есть ли инструмент в один клик?
В два шага. Первый: добавьте заголовок Content-Security-Policy: upgrade-insecure-requests — браузер сам заменит http:// ресурсы на https://, это решает 80% проблем. Второй: прогоните весь сайт через консоль Chrome DevTools и уберите оставшиеся захардкоженные http:// из кода и базы данных. На WordPress не делайте прямой SQL-замены в wp_posts — используйте Search Replace DB для безопасной замены с учётом сериализации. После исправления проверьте через SSL Labs и консоль Chrome: смешанного контента должно быть 0.
Как настроить автообновление сертификата и какие подводные камни самые опасные?
Используйте certbot или acme.sh с crontab для автообновления, запускайте проверку раз в неделю. Самый частый подводный камень: webroot в скрипте обновления не совпадает с реальной конфигурацией nginx, проверка не проходит, и сертификат тихо истекает. После настройки сразу запустите команду обновления вручную и убедитесь, что всё сработало, а в мониторинге добавьте правило: если до истечения сертификата меньше 15 дней — шлите алерт. Если перед CDN стоит Cloudflare, помните: edge-сертификат и сертификат origin — это два разных, не обновляйте только один.
Влияет ли HTTPS на SEO и обязателен ли он для всего сайта?
Влияет, и он обязателен. С 2018 года Google использует HTTPS как сигнал ранжирования, а Chrome помечает HTTP-сайты как небезопасные. Что важнее: поисковики считают HTTP и HTTPS двумя версиями контента, это размывает вес и может вызвать определение дублированного контента. Правильно: все 301 с HTTP-порта 80 на HTTPS, доступных HTTP-страниц оставаться не должно. О том, как делать 301 при смене домена или миграции, читайте Реструктуризация сайта и смена домена в статье.
Как настроить версии TLS, отключать ли TLS 1.0 и 1.1?
Обязательно отключать. TLS 1.0 и 1.1 официально устарели согласно RFC 8996, требования PCI DSS и основные браузеры постепенно убирают их поддержку. В конфигурации nginx оставьте только TLSv1.2 и TLSv1.3, из шифров предпочитайте ECDHE и AES-GCM. После настройки прогоните SSL Server Test: оценка должна быть A или выше, а в списке протоколов не должно быть TLS 1.0 и 1.1. Если есть трафик от очень старых IE11, сделайте совместимость отдельно для этого User-Agent, но не включайте старые протоколы для всего сайта.

В заключение

Настройку HTTPS часто воспринимают как «поставил сертификат — и готово», хотя на деле это фундамент безопасности и SEO вашего сайта. Истёкший сертификат, отсутствие HSTS, остатки смешанного контента — каждая из этих трёх проблем заставляет браузер показать красное предупреждение. Покупатель видит его и закрывает страницу, а позиции в поиске проседают. Настроить один раз и проверять раз в месяц стоит копейки, а выигрывает весь сайт.

Три шага на практике: сначала закрываем вопрос с сертификатом — автоматическое продление через Let’s Encrypt и оценка A или выше в SSL Labs; затем по трём этапам поднимаем HSTS с 5 минут до года; и наконец сводим смешанный контент к нулю через upgrade-insecure-requests и ручную чистку. Только после этих трёх шагов HTTPS действительно настроен. Чек-лист для регулярного обслуживания — в Шесть задач на месяц в период обслуживания сайта, добавьте туда проверку HTTPS.

Запомните одну фразу: HTTPS — это не просто установленный сертификат. Автоматическое продление сертификата, постепенное усиление HSTS и обнуление смешанного контента — только когда пройдены все три уровня, это настоящий HTTPS. Не хватит одного — и красное предупреждение браузера само отгонит от вас покупателей.

crater
crater Эксперт Crater

Официальный аккаунт организации · crater Crater

环形山 (Crater) — компания, которая помогает выходить на зарубежные рынки: разработка сайтов на WordPress, Google SEO и комплексный рост в GEO. Мы работаем с умными устройствами, промышленным оборудованием, SaaS и новой энергетикой.

Возможности продуктаБелая книга по методологииОтраслевые отчёты
965篇分享
78статей в базе знаний