bg-tutorials

Как настроить SSL-сертификат на WordPress и перейти на HTTPS

Установка SSL-сертификата на сайт WordPress состоит из трёх шагов: установить сертификат на сервере, направить WordPress на HTTPS-версии ваших URL-адресов и перенаправить старый HTTP-трафик. Большинство хостингов теперь выполняют первый шаг за вас, а начиная с версии 5.7 WordPress самостоятельно берёт на себя значительную часть второго. В этом руководстве рассматриваются все три шага, для бесплатных и платных сертификатов, а также разбираются ошибки, которые обычно возникают после этого.

Краткий ответ: установите SSL-сертификат через панель управления хостингом, затем откройте раздел Настройки > Общие в WordPress и измените оба поля — WordPress Address (URL) и Site Address (URL) — на их https-версии. Завершите настройку добавлением 301-редиректа, чтобы HTTP-запросы попадали на HTTPS.

SSL (сокращение от Secure Sockets Layer, хотя каждый выпускаемый сегодня сертификат на самом деле использует TLS) — это то, что превращает http:// в https:// и убирает надпись «Не защищено» из адресной строки. Если хотите сначала разобраться в теории, прочитайте статью что такое SSL-сертификат. В противном случае начните с таблицы ниже.

Какой метод подходит для вашей конфигурации

Существует три способа добавить SSL в WordPress, и правильный выбор почти полностью зависит от вашего хостинга. Найдите свою конфигурацию, а затем переходите к соответствующему методу.

Ваша конфигурацияИспользуйте этот методПриблизительное время
Управляемый хостинг WordPressНичего устанавливать не нужно. Сертификат обычно уже активен, поэтому переходите к переключению WordPress на HTTPS5 минут
cPanel или аналогичный хостинг с общим доступомМетод 1 — бесплатный AutoSSL от хостинга10 минут
Хостинг без инструмента SSL, или вы хотите, чтобы всё сделали за васМетод 2 — мастер настройки плагинаот 10 до 15 минут
VPS, выделенный сервер или платный сертификатМетод 3 — ручная установка30 минут плюс время валидации
Cloudflare перед вашим сайтомМетод 1 или 3, затем установите режим SSL в Cloudflare на Full (strict). См. раздел устранения неполадок15 минут

Какой бы путь вы ни выбрали, сначала сделайте резервную копию сайта, и если у вас есть тестовая среда, сначала внесите изменения там, прежде чем трогать рабочий сайт.

Нужен ли вам SSL-сертификат для WordPress?

Да, и для большинства людей причина уже видна невооружённым глазом: Chrome, Firefox, Safari и Edge помечают простые HTTP-страницы как Не защищено в адресной строке. Эта надпись появляется на каждой странице сайта без сертификата, включая форму входа.

Три практические причины исправить это:

  • Учётные данные и данные форм передаются в открытом виде. Без сертификата любой человек в той же сети может прочитать то, что отправляют посетители, включая ваш собственный пароль WordPress.
  • Платежи требуют этого. Если вы используете WooCommerce или принимаете какие-либо данные карт, HTTPS не является опцией. Платёжные шлюзы просто откажутся работать через HTTP.
  • Google использует HTTPS как сигнал ранжирования. Это реальный, но незначительный сигнал, поэтому воспринимайте аргумент SEO как бонус, а не основную причину. Причина — это предупреждение браузера.

Какой SSL-сертификат следует использовать сайту на WordPress?

Начните с бесплатного варианта, потому что для значительной доли сайтов на WordPress это действительно правильный ответ. Большинство хостингов автоматически выпускают бесплатные сертификаты Let’s Encrypt, и бесплатный сертификат шифрует трафик ровно так же хорошо, как и платный. Шифрование идентично. Различие между одним SSL-сертификатом для WordPress и другим заключается в том, что проверял центр сертификации перед выпуском, и что вы получаете, если что-то идёт не так.

Уровни валидации

ТипЧто проверяет CAСрок выпускаПодходит для
Domain Validation (DV)Что вы контролируете доменМинутыБлоги, презентационные сайты, большинство установок WordPress
Organization Validation (OV)Домен плюс данные вашей зарегистрированной организацииОт 1 до 3 рабочих днейБизнес-сайты, зоны с членством, клиентские порталы
Extended Validation (EV)Полная юридическая и операционная проверка компанииОт 1 до 5 рабочих днейМагазины, обрабатывающие платежи, финансы, всё, где важна идентичность

Если ваш сайт работает с поддоменами, например магазин на store.example.com и блог на blog.example.com, wildcard-сертификат охватывает их все одним сертификатом вместо отдельного для каждого поддомена. Не уверены, какой тип вам подходит? Мастер выбора SSL поможет определиться за несколько вопросов.

Когда бесплатного сертификата становится недостаточно

Бесплатные сертификаты бывают только уровня DV, действуют 90 дней и не имеют ни поддержки, ни гарантии. Для личного блога это вполне нормально. Проблема возникает в четырёх ситуациях:

  • Вы принимаете платежи. Платные сертификаты имеют гарантию, покрывающую убытки, если сам сертификат не сработает. У бесплатных её нет.
  • Вашим посетителям нужно знать, кто вы. Сертификат DV подтверждает лишь то, что кто-то контролирует домен. OV и EV помещают проверенные данные вашей организации внутрь сертификата.
  • Вы используете поддомены. Бесплатный wildcard-сертификат получить возможно, но это хлопотно и обычно требует автоматизации DNS, которую ваш хостинг может не предоставлять.
  • Продление не автоматизировано. 90-дневный сертификат, который никто не продлевает, укладывает сайт так же надёжно, как и полное отсутствие сертификата. Если ваш хостинг не продлевает сертификаты автоматически, более долгосрочный платный сертификат — это меньше работы, а не больше.

Метод 1: получить бесплатный SSL-сертификат от вашего хостинга

Это самый быстрый путь, и его стоит попробовать первым. Почти каждый хостинг сейчас предлагает бесплатные сертификаты Let’s Encrypt, часто уже включённые по умолчанию.

  • Откройте панель управления хостингом и найдите раздел SSL/TLS, Let’s Encrypt или AutoSSL. В cPanel он находится в разделе Security.
  • Выберите свой домен и выпустите сертификат. Включите как основной домен, так и версию с www, иначе один из них выдаст предупреждение о несовпадении имени.
  • Убедитесь, что автопродление включено. Это тот шаг, который часто пропускают.

Нет панели управления хостингом вообще, потому что у вас свой VPS или выделенный сервер? Используйте Certbot, клиент Let’s Encrypt, который выпускает сертификат из командной строки и настраивает собственный график продления.

Сертификаты Let’s Encrypt действуют 90 дней, и продление должно происходить автоматически, обычно примерно за 30 дней до истечения срока. Когда эта автоматизация ломается — а она ломается, — обычно после переноса домена или изменения записи DNS, сайт продолжает нормально работать несколько недель, а затем без предупреждения переходит в статус «Не защищено». Установите напоминание в календаре на первую ожидаемую дату продления и проверьте сертификат с помощью SSL Checker после того, как она пройдёт. Если дата истечения сдвинулась вперёд, продление работает.

Метод 2: установить SSL на WordPress с помощью плагина

Плагин, к которому обращается большинство людей, — Really Simple Security. До сентября 2024 года он назывался Really Simple SSL, когда в версии 9 его переименовали, поскольку набор бесплатных функций вышел за рамки простой настройки SSL. У него более трёх миллионов активных установок.

Что изменилось вместе с названием — важно здесь: плагин больше не только принудительно включает редирект, он также может получить сертификат для вас через мастер Let’s Encrypt. Таким образом, он охватывает всю задачу, когда ваш хостинг этого не делает.

  • Установите и активируйте Really Simple Security через раздел Плагины > Добавить новый плагин.
  • Пройдите открывшийся процесс настройки или перейдите в новый пункт Security, который плагин добавляет в боковую панель админки. Более старые руководства указывают путь Настройки > SSL, где плагин находился до переименования. Если сертификат уже установлен на сервере, плагин его обнаружит.
  • Если сертификата нет, выберите Install SSL certificate и следуйте инструкциям мастера, чтобы получить бесплатный сертификат Let’s Encrypt.
  • Выберите Activate SSL. Плагин обновит URL-адреса вашего сайта, настроит редирект и перезагрузит панель управления через HTTPS.

Стоит знать об одном важном моменте, прежде чем принимать решение. Плагин, принудительно включающий HTTPS, делает это на уровне PHP, при каждом запросе. Редирект, прописанный в конфигурации сервера, срабатывает до загрузки WordPress, что быстрее и продолжает работать, даже если плагин когда-либо будет деактивирован. Если вы уверенно работаете с файлами конфигурации сервера, выполните переключение вручную и держите плагин вне критического пути.

Метод 3: установить SSL-сертификат вручную

Это путь для платного сертификата или для любого сервера без инструмента установки в один клик. На хостинге с общим доступом сначала проверьте, разрешает ли ваш тарифный план установку сторонних сертификатов; некоторые бюджетные хостинги до сих пор блокируют это или взимают за это плату.

  • Сгенерируйте CSR. Запрос на подпись сертификата содержит данные вашего домена и организации для центра сертификации. Используйте наш генератор CSR или следуйте руководствам по CSR для вашего конкретного сервера.
  • Отправьте CSR в центр сертификации и пройдите валидацию. DV завершается за минуты, OV и EV занимают дни.
  • Установите файлы. Вы получите сам сертификат плюс один или несколько промежуточных сертификатов. В cPanel вставьте их в раздел SSL/TLS > Manage SSL sites, следуя руководству по установке в cPanel. Другие платформы описаны в руководствах по установке SSL.
  • Проверьте с помощью SSL Checker, прежде чем переходить к настройке WordPress.

Обратите внимание на промежуточные сертификаты. Если вы установите основной сертификат, но пропустите цепочку, большинство настольных браузеров всё равно покажут значок замка, поскольку они кэшируют промежуточные сертификаты, увиденные где-то ещё. Мобильные браузеры, платёжные шлюзы и всё, что обращается к вашему сайту через API, дадут сбой. Сайт, который «работает в Chrome, но ломается на оформлении заказа», очень часто указывает на неполную цепочку, и SSL Checker сообщит об этом.

Использование WordPress Multisite добавляет несколько дополнительных шагов, описанных в руководстве по SSL для Multisite.

Переключите свой сайт WordPress с HTTP на HTTPS

Сертификат уже на сервере. WordPress о нём пока не знает. Именно здесь многие руководства отправляют вас выполнить поиск и замену в базе данных прежде чем что-либо ещё, и для большинства сайтов это уже давно не требуется.

Что WordPress делает самостоятельно

Начиная с WordPress 5.7, выпущенной в марте 2021 года, ядро определяет, поддерживает ли ваша среда HTTPS, и сообщает об этом в разделе Инструменты > Здоровье сайта > Статус, в блоке HTTPS status. Когда HTTPS доступен, в этом разделе появляется кнопка, переключающая сайт в один клик.

Что важнее, после того как оба поля — Site Address (URL) и WordPress Address (URL) — переведены на https, WordPress перезаписывает незащищённые URL-адреса в вашем контенте по мере вывода страницы. Изображения, ссылки и встраиваемые элементы, сохранённые с http-адресами на вашем же домене, отдаются через https без какого-либо редактирования базы данных. Именно этот шаг старые руководства предлагают выполнять вручную.

Важно понять это точно, потому что от этого зависит, что вам всё-таки нужно сделать: перезапись происходит на выходе, через фильтры, применяемые к контенту в момент отображения. Ваша база данных всё ещё содержит старые http-адреса. Для посетителей результат идентичен, поэтому миграция работает без поиска и замены, но сохранённые данные остаются неизменными. Это важно, когда вы экспортируете сайт, переносите его на другой хостинг или обращаетесь к базе данных напрямую, и именно поэтому поиск и замену всё же стоит выполнить в какой-то момент, а не откладывать навсегда.

Измените два параметра URL

Если Здоровье сайта не предлагает кнопку в один клик, или вы предпочитаете сделать это явно, откройте Настройки > Общие. Здесь есть два поля, и оба нужно изменить:

  • WordPress Address (URL) — где расположены файлы WordPress.
  • Site Address (URL) — адрес, который вводят посетители.

Измените http:// на https:// в обоих полях, затем сохраните. Изменение только одного поля — самая распространённая причина, по которой вы можете сами заблокировать себе доступ к панели управления. Если это произошло, вы можете установить оба значения из файла wp-config.php через FTP:

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

Добавьте эти строки выше строки «That’s all, stop editing» и замените example.com на свой домен. Обратите внимание, что при определении этих констант поля в разделе Настройки > Общие становятся доступными только для чтения.

Когда всё же нужен поиск и замена

Перезапись ядра WordPress охватывает отображаемый контент. Она не достигает всего, поэтому поиск и замена всё же остаётся решением для:

  • URL-адресов, прописанных жёстко в файлах темы или в файле functions.php.
  • Настроек плагинов, хранящихся в виде сериализованных данных, поэтому никогда не следует выполнять простой поиск и замену через SQL.
  • Строк опций, произвольных полей и содержимого виджетов, созданных конструкторами страниц.

Используйте плагин Better Search Replace, который корректно обрабатывает сериализованные данные и имеет режим тестового прогона, либо WP-CLI:

wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run

Изучите результат тестового прогона, затем повторите команду без —dry-run, чтобы применить изменения. Сначала сделайте резервную копию базы данных.

Принудительно включить HTTPS в WordPress с помощью 301-редиректа

Ваш сайт теперь отвечает на https, но он всё ещё отвечает и на http, и каждая старая ссылка и закладка ведут туда. Постоянный HTTPS-редирект отправляет и посетителей, и поисковые системы на защищённую версию и передаёт сигналы ранжирования со старых URL-адресов. Настраивайте его на уровне сервера, а не через PHP, где это только возможно.

Apache

Добавьте это в начало файла .htaccess в корне вашего WordPress, выше блока WordPress:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Флаг R=301 делает редирект постоянным. Правило, записанное как [R,L], выдаёт временный код 302, что является ошибкой, которую стоит проверить, если вы скопировали редирект из старого руководства.

Nginx

У Nginx нет файла .htaccess, и он не понимает правила перезаписи, написанные для Apache. Вместо этого отредактируйте блок server в конфигурации вашего сайта:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Проверьте конфигурацию командой nginx -t, затем перезагрузите её командой systemctl reload nginx.

Принудительно включить HTTPS только для панели управления

Чтобы защитить именно входы и административную область, добавьте это в wp-config.php:

define( 'FORCE_SSL_ADMIN', true );

Это охватывает wp-admin и страницу входа. Это не перенаправляет посетительскую часть сайта, поэтому дополняет редирект на уровне сервера, а не заменяет его.

HSTS, когда всё уже работает

HSTS указывает браузерам полностью отказывать в доступе по обычному HTTP для вашего домена, что закрывает разрыв между первым запросом и редиректом. На Apache:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Добавляйте это только после того, как HTTPS оставался стабильным в течение некоторого времени, и оставьте директиву preload отключённой на первое время. Preloading трудно быстро отменить, и если что-то на поддомене ещё не переведено на HTTPS, оно становится недоступным.

Устраните проблемы, оставшиеся после переключения

Смешанный контент

Смешанный контент — это страница, отдаваемая через HTTPS, но которая всё же подгружает изображения, скрипты, стили или шрифты через HTTP. Браузеры сейчас делят это на два типа: обновляемые ресурсы, в основном изображения и медиа, которые они незаметно переводят на HTTPS перед запросом, и блокируемые ресурсы, такие как скрипты и стили, которые они вообще откажутся загружать. Именно поэтому страница со смешанным контентом может выглядеть просто без замка на адресной строке или может отображаться совершенно без стилей.

В WordPress обычные источники — это жёстко прописанный URL изображения в файле темы, внешний скрипт, загружаемый через HTTP, и CDN, всё ещё настроенный на HTTP. Откройте консоль браузера, которая укажет проблемный ресурс, и устраните его у источника. Наше руководство как исправить смешанный контент подробно описывает диагностику.

Кэши и CDN

Очистите кэш страниц и CDN после переключения. Кэшированная копия HTTP-страницы продолжит отдавать старую разметку и заставит завершённую миграцию выглядеть неисправной.

Письма и транзакционные шаблоны

Это почти всегда упускают из виду. Письма о заказах WooCommerce, сообщения о сбросе пароля, шаблоны счетов и подвалы рассылок часто содержат жёстко прописанные HTTP-ссылки, и они находятся за пределами таблиц, которые затрагивает обычный поиск и замена. Отправьте себе тестовый заказ и тестовый запрос на сброс пароля, затем проверьте, куда на самом деле ведут ссылки.

Устранение проблем с SSL в WordPress

СимптомОбычная причинаРешение
Бесконечный цикл редиректов, ERR_TOO_MANY_REDIRECTSSSL в Cloudflare установлен на Flexible. Cloudflare общается с вашим сервером по HTTP, ваш сервер перенаправляет на HTTPS, Cloudflare отправляет обратноУстановите режим шифрования Cloudflare SSL/TLS на Full (strict) и держите действующий сертификат на источнике
Заблокирован доступ к wp-admin после переключенияИзменено только одно из двух полей URLУстановите WP_HOME и WP_SITEURL в файле wp-config.php через FTP
Замок отсутствует только на некоторых страницахСмешанный контент на этих страницахНайдите HTTP-ресурс в консоли браузера, устраните его у источника
Сайт работал нормально, а через недели стал «Не защищено»Сертификат Let’s Encrypt истёк, потому что продление сломалосьПереиздайте сертификат, затем подтвердите автопродление в панели управления
Работает в браузере, но даёт сбой для приложения или платёжного шлюзаПромежуточные сертификаты отсутствуют в цепочкеУстановите полный пакет CA, затем перепроверьте с помощью SSL Checker
Предупреждение о несовпадении имени на www или основном доменеСертификат покрывает только одно из двухПереиздайте сертификат так, чтобы он охватывал оба имени; один редирект не может исправить это, предупреждение появляется до того, как срабатывает какой-либо редирект

Если сертификат установлен, а сайт всё равно отображается как незащищённый, руководства по ошибкам SSL охватывают конкретные коды ошибок браузеров.

После миграции: контрольный список SEO и чего ожидать

  • Добавьте свойство HTTPS в Google Search Console. Свойство HTTP не сообщает данные по HTTPS-URL. Добавьте новое и сохраните старое, либо используйте свойство домена, которое охватывает оба варианта. Если вы используете Bing Webmaster Tools, обновите его там тоже.
  • Повторно отправьте XML-карту сайта с https-адресами.
  • Проверьте канонические теги — они должны указывать на https. Большинство SEO-плагинов обновляют их автоматически при изменении URL-адресов сайта, но подтвердите это в исходном коде страницы.
  • Обновите настройки свойств Google Analytics и Ads, а также любые сторонние сервисы, которые сохраняют URL вашего сайта.
  • Обновите внутренние ссылки, если они абсолютные. Относительные ссылки не требуют изменений.

Как выглядит нормальная ситуация после этого, потому что она беспокоит людей, никогда не делавших это ранее: Search Console будет показывать ваши показы, разделённые между свойствами HTTP и HTTPS, в течение некоторого времени, пока Google повторно индексирует сайт, а позиции в рейтинге часто колеблются несколько недель, прежде чем стабилизироваться. Google рассматривает переход с HTTP на HTTPS как переезд сайта с изменением URL-адресов, поэтому некоторые колебания ожидаемы, а не являются признаком того, что что-то пошло не так. Пока 301-редиректы на месте и каждая страница открывается, остаётся только ждать.

Стоит сказать прямо: возврат с HTTPS на HTTP почти никогда не является правильным решением проблемы. Это означает второй переезд сайта, ещё один раунд колебаний в рейтинге, и предупреждения браузера возвращаются. Если HTTPS вызывает проблемы, причина почти всегда — одна из позиций в таблице устранения неполадок, и исправить это гораздо дешевле, чем отменять миграцию.

Часто задаваемые вопросы

Как принудительно включить HTTPS в WordPress?

Измените оба поля — WordPress Address (URL) и Site Address (URL) — на https в разделе Настройки > Общие, затем добавьте 301-редирект на уровне сервера. На Apache это правило перезаписи в файле .htaccess, заканчивающееся на [R=301,L]; на Nginx это строка return 301 https://$host$request_uri; в блоке server для порта 80. Добавьте FORCE_SSL_ADMIN в wp-config.php, чтобы также охватить панель управления.

Нужно ли мне всё же выполнять поиск и замену в базе данных?

Обычно нет, и это изменение, за которым многие руководства не успели. Начиная с WordPress 5.7, когда оба параметра URL сайта используют https, WordPress перезаписывает незащищённые URL-адреса в вашем контенте при отображении страницы. Поиск и замену всё же стоит выполнить для URL-адресов, жёстко прописанных в файлах темы, в сериализованных опциях плагинов или в контенте конструкторов страниц, но это скорее шаг по очистке, чем обязательная часть миграции.

Сколько времени занимает переключение сайта WordPress на HTTPS?

Если ваш хостинг уже выпустил сертификат, около пяти минут. Выпуск бесплатного сертификата и запуск мастера плагина занимает от десяти до пятнадцати минут. Ручная установка с платным сертификатом Domain Validation занимает около тридцати минут, а Organization или Extended Validation добавляет от одного до пяти дней валидации, прежде чем вы сможете что-либо установить. Исправление смешанного контента после этого — переменная часть, зависящая от того, сколько вашего контента содержит жёстко прописанные URL-адреса.

Повредит ли переключение на HTTPS моим позициям в поиске?

Не постоянно, при условии, что каждый HTTP-адрес перенаправляется на свой эквивалент HTTPS с помощью 301-редиректа. Google рассматривает этот переход как переезд сайта с изменением URL-адресов, поэтому ожидайте некоторых колебаний в течение нескольких недель, пока происходит повторное индексирование, и ожидайте, что показы будут отображаться разделёнными между вашими свойствами HTTP и HTTPS в Search Console в этот период. Длительные падения обычно связаны с пропущенными редиректами, а не с самим HTTPS.

Почему мой сайт на WordPress всё ещё показывает «Не защищено» после установки сертификата?

Три причины объясняют большинство случаев. URL-адреса сайта в разделе Настройки > Общие всё ещё используют http, поэтому WordPress продолжает отдавать HTTP-страницы. Либо страницы загружают хотя бы один ресурс через HTTP, что является смешанным контентом. Либо сертификат установлен без промежуточных сертификатов, из-за чего валидация проходит нестабильно. Сначала запустите SSL Checker, так как он позволяет отличить проблему установки от проблемы с контентом.

Переносите другую платформу на HTTPS или хотите узнать общую процедуру? Смотрите наше руководство как переключить сайт с HTTP на HTTPS.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.