15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
10.10.2024

Как установить SSL-сертификат на ваш сайт WordPress

Сертификат SSL (Secure Sockets Layer / TLS) — это криптографический протокол, который шифрует данные при передаче между веб-сервером и браузером. На сайте WordPress установка SSL означает, что каждый HTTP-запрос перенаправляется на HTTPS, браузер отображает значок замка, а конфиденциальные данные — учётные данные для входа, отправленные формы, платёжные реквизиты — передаются по зашифрованному каналу, а не в открытом виде.

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

Шаг 1: Выбор правильного типа SSL-сертификата

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

Сравнение уровней проверки

Тип сертификатаУровень проверкиВремя выдачиЛучше всего подходит дляСигнал доверия браузера
**Проверка домена (DV)**Только владение доменомОт минут до часовБлоги, личные сайты, среды разработкиЗначок замка
**Проверка организации (OV)**Домен + юридическое лицо1–3 рабочих дняКорпоративные сайты, SaaS-порталыЗамок + данные организации в сертификате
**Расширенная проверка (EV)**Полная юридическая и операционная проверка1–5 рабочих днейЭлектронная коммерция, банки, порталы с высоким уровнем доверияЗамок + название организации (в некоторых браузерах)
**Wildcard DV/OV**Домен + все поддоменыОт минут до днейРазвёртывания с несколькими поддоменамиЗамок
**Мультидоменный (SAN)**Несколько отдельных доменовОт минут до днейАгентства, управляющие несколькими ресурсамиЗамок

Бесплатный и платный SSL

Let's Encrypt выдаёт бесплатные автоматизированные DV-сертификаты сроком действия 90 дней с поддержкой автоматического продления через протокол ACME. Он пользуется доверием всех основных браузеров и является правильным выбором для подавляющего большинства сайтов на WordPress. Короткий срок действия является намеренным — он обеспечивает автоматизацию и снижает риск использования скомпрометированного сертификата.

Бесплатный SSL от Cloudflare работает иначе: он шифрует соединение между посетителем и пограничным узлом Cloudflare, однако соединение между Cloudflare и вашим исходным сервером может оставаться незашифрованным, если не настроить режим Full (Strict) с действующим сертификатом источника. Это часто неправильно понимаемый частный случай, создающий ложное ощущение безопасности.

Платные сертификаты от коммерческих центров сертификации (DigiCert, Sectigo, GlobalSign) необходимы, когда требуется проверка OV или EV, гарантия или специфическая конфигурация SAN/Wildcard, не поддерживаемая Let's Encrypt.

Если вам нужно приобрести доверенный сертификат для вашего домена, AlexHost предоставляет SSL-сертификаты с простой выдачей и управлением непосредственно из панели вашего аккаунта.

Шаг 2: Установка SSL-сертификата на уровне хостинга

Сертификат должен быть установлен на веб-сервере, прежде чем WordPress сможет обслуживать HTTPS-ответы. Метод зависит от вашей хостинговой среды.

Установка SSL через cPanel (виртуальный и VPS-хостинг)

cPanel — наиболее распространённая панель управления для виртуальных и управляемых сред. Если ваш хостинг использует AutoSSL (на базе Sectigo) или поддерживает Let's Encrypt нативно, одним нажатием кнопки можно получить и автоматически обновить сертификат.

Шаги ручной установки при наличии файлов сертификата от центра сертификации:

  1. Войдите в cPanel и перейдите в раздел Безопасность > SSL/TLS.
  2. Нажмите Управление SSL-сайтами.
  3. Выберите целевой домен из выпадающего списка.
  4. Вставьте содержимое трёх файлов в соответствующие поля:
  • Сертификат (CRT): Подписанный сертификат от вашего центра сертификации.
  • Закрытый ключ (KEY): Сгенерированный при создании CSR — никогда не передавайте его третьим лицам.
  • Пакет центра сертификации (CABUNDLE): Промежуточные цепочечные сертификаты.
  1. Нажмите Установить сертификат.

Если вы запускаете WordPress на VPS с cPanel, AutoSSL обычно обрабатывает это автоматически для всех доменов в WHM. Убедитесь в разделе WHM > SSL/TLS > Управление AutoSSL, что домен охвачен и сертификат не находится в состоянии ожидания или ошибки.

Установка SSL на VPS с Apache (ручной метод)

На самостоятельно управляемом Linux VPS с Apache этот процесс требует непосредственного редактирования конфигурации виртуального хоста.

Установка Certbot (клиент Let's Encrypt) на Debian/Ubuntu:

sudo apt update
sudo apt install certbot python3-certbot-apache -y

Автоматическое получение и установка сертификата:

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Certbot изменяет конфигурацию виртуального хоста Apache, устанавливает сертификат и настраивает задание cron или таймер systemd для автоматического продления. Убедитесь, что таймер продления активен:

sudo systemctl status certbot.timer

Для Nginx на VPS:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Ручная установка сертификата на Apache (при использовании платного сертификата от центра сертификации):

Поместите файлы сертификата в защищённый каталог, затем отредактируйте виртуальный хост:

<VirtualHost *:443>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile   /etc/ssl/private/yourdomain.key
    SSLCertificateChainFile /etc/ssl/certs/yourdomain_ca_bundle.crt
</VirtualHost>

Перезапустите Apache для применения изменений:

sudo systemctl restart apache2

Если вы управляете высоконагруженной установкой WordPress на выделенном сервере, у вас есть полный контроль над наборами шифров, заголовками HSTS и OCSP stapling — конфигурации, недоступные на виртуальном хостинге.

Установка SSL на VPS с Nginx (ручной метод)

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate     /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 1.1.1.1 valid=300s;

    root /var/www/html;
    index index.php;
}

Перезагрузите Nginx после редактирования:

sudo nginx -t && sudo systemctl reload nginx

Шаг 3: Принудительное перенаправление на HTTPS на уровне сервера с помощью редиректа 301

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

Apache: .htaccess Редирект

Откройте файл .htaccess (расположенный в корне WordPress, обычно /var/www/html/.htaccess или доступный через файловый менеджер cPanel) и добавьте следующий блок выше существующих правил перезаписи WordPress:

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

Важное предупреждение: Если вы разместите этот блок *после* маркера # BEGIN WordPress, он может быть перезаписан обновлениями ядра WordPress. Всегда размещайте правила перенаправления на уровне сервера выше блока, управляемого WordPress.

Nginx: Редирект серверного блока

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

Заголовок HSTS (расширенный, рекомендуется)

Когда вы убедитесь, что ваша настройка HTTPS стабильна, добавьте заголовок HTTP Strict Transport Security, чтобы браузеры никогда не пытались установить HTTP-соединение:

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

Предупреждение: Не включайте HSTS с preload, пока не убедитесь, что каждый поддомен также имеет действующий SSL-сертификат. Предварительная загрузка необратима в краткосрочной перспективе и нарушит работу поддоменов, для которых не настроен HTTPS.

Шаг 4: Настройка WordPress для обслуживания всего контента через HTTPS

После установки сертификата и настройки перенаправления на уровне сервера необходимо указать WordPress генерировать HTTPS URL для всех внутренних ссылок, ресурсов и конечных точек API.

Вариант A: Ручное обновление URL сайта WordPress

  1. Перейдите в раздел Настройки > Общие в панели администратора WordPress.
  2. Измените оба поля — Адрес WordPress (URL) и Адрес сайта (URL) — с http:// на https://.
  3. Нажмите Сохранить изменения.

WordPress немедленно выйдет из системы после сохранения. Войдите снова, используя HTTPS URL.

Вариант B: Обновление URL через wp-config.php

Если вы не можете войти в панель администратора или предпочитаете подход на основе кода, добавьте эти строки в wp-config.php перед строкой /* That's all, stop editing! */:

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

Вариант C: Обновление жёстко заданных HTTP URL в базе данных

WordPress хранит URL в базе данных, включая сериализованные данные в таблицах метаданных записей и параметров. Простой поиск и замена в исходном SQL может повредить сериализованные массивы. Используйте WP-CLI для безопасной замены с учётом сериализации:

wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --skip-columns=guid --all-tables

Флаг --skip-columns=guid сохраняет GUID записей, которые не следует изменять согласно рекомендациям WordPress. Выполните команду из корневого каталога WordPress с соответствующими учётными данными базы данных, настроенными в wp-config.php.

Альтернативно, плагин Better Search Replace выполняет ту же операцию через интерфейс администратора с поддержкой сериализации.

Шаг 5: Устранение предупреждений о смешанном контенте

Предупреждение о смешанном контенте возникает, когда страница HTTPS загружает один или несколько ресурсов (изображения, скрипты, таблицы стилей, iframe) через HTTP. Это нарушает безопасный контекст, скрывает значок замка, а в некоторых случаях браузеры полностью блокируют ресурс.

Диагностика смешанного контента

Откройте инструменты разработчика браузера (F12), перейдите на вкладку Консоль и найдите предупреждения с префиксом Mixed Content:. В сообщении будет указан точный URL ресурса, вызывающего проблему.

Альтернативно используйте инструмент Why No Padlock? или запустите сканирование SSL Labs для получения полного отчёта.

Устранение смешанного контента: метод с плагином

Really Simple SSL — наиболее широко используемый плагин для этой цели. После активации он:

  • Устанавливает серверную переменную HTTPS, чтобы WordPress распознавал защищённое соединение.
  • Добавляет фильтр контента на основе JavaScript для перезаписи HTTP URL на лету.
  • При необходимости сбрасывает правила перезаписи и обновляет URL сайта.

SSL Insecure Content Fixer предлагает более детальный контроль, позволяя выбирать между простой заменой в выходном буфере и более глубоким подходом с использованием хуков фильтров WordPress — полезно, когда метод JavaScript плагина Really Simple SSL вызывает проблемы с отображением в определённых конструкторах страниц.

Устранение смешанного контента: ручной метод

Для жёстко заданных HTTP URL в файлах темы или пользовательских плагинах выполните поиск в каталоге темы:

grep -r "http://yourdomain.com" /var/www/html/wp-content/themes/your-theme/

Замените все вхождения на https:// или, что предпочтительнее, используйте протокол-относительные URL (//yourdomain.com/...) для сторонних ресурсов, для которых вы не можете гарантировать доступность HTTPS.

Для встроенных медиафайлов, загруженных до миграции на SSL, выполните команду поиска и замены WP-CLI из шага 4, если вы ещё этого не сделали, поскольку URL вложений изображений хранятся в таблицах wp_posts и wp_postmeta.

Шаг 6: Проверка установки SSL

Никогда не предполагайте, что установка прошла успешно — проверяйте это систематически.

Тест SSL Labs

Перейдите на https://www.ssllabs.com/ssltest/ и введите ваш домен. Правильно настроенный сайт WordPress должен получить оценку A или A+. Оценка A+ требует:

  • Поддержки TLS 1.2 и 1.3 при отключённых TLS 1.0 и 1.1.
  • Надёжного набора шифров (без RC4, без 3DES).
  • Наличия заголовка HSTS.
  • Включённого OCSP stapling.
  • Отсутствия проблем с цепочкой (промежуточные сертификаты установлены корректно).

Проверка в браузере

Нажмите на значок замка в адресной строке. В Chrome перейдите в раздел Соединение защищено > Сертификат действителен, чтобы подтвердить, что издатель, сроки действия и альтернативные имена субъекта (SAN) соответствуют вашему домену.

Проверка через командную строку

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

Это выводит полную цепочку сертификатов, согласованный шифр и версию TLS. Найдите Verify return code: 0 (ok), чтобы подтвердить доверие к цепочке.

Проверка срока действия сертификата

echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

Для сертификатов Let's Encrypt также убедитесь, что пробный запуск автоматического продления работает:

sudo certbot renew --dry-run

Шаг 7: Усиление защиты после установки и SEO-очистка

Обновление Google Search Console

Добавьте HTTPS-версию вашего сайта как новый ресурс в Google Search Console. Google рассматривает http:// и https:// как отдельные ресурсы. Отправьте HTTPS-карту сайта (https://yourdomain.com/sitemap.xml), чтобы ускорить повторную индексацию обновлённых URL.

Обновление карты сайта и канонических тегов

Убедитесь, что ваша XML-карта сайта (сгенерированная Yoast SEO, Rank Math или аналогичным плагином) содержит исключительно HTTPS URL. Проверьте, что канонические теги в файле <head> вашей темы ссылаются на HTTPS. Канонический тег, указывающий на HTTP-версию страницы, будет вводить в заблуждение поисковых роботов, даже если редирект 301 настроен.

Уведомление Google об изменении

В Google Search Console используйте инструмент Смена адреса только в случае миграции на совершенно новый домен. При миграции с HTTP на HTTPS на том же домене редиректы 301 обеспечивают передачу сигнала — инструмент смены адреса не нужен.

Особенности WordPress Multisite

В сети WordPress Multisite необходимо обновить значения siteurl и home в таблицах wp_siteurl и wp_blogs для каждого подсайта, а не только для основного сайта. WP-CLI обрабатывает это для каждого сайта:

wp search-replace 'http://subdomain.yourdomain.com' 'https://subdomain.yourdomain.com' --url=subdomain.yourdomain.com --all-tables

Практическая матрица решений: какой метод SSL использовать

Ваша хостинговая средаРекомендуемый метод SSLПродлениеСложность
Виртуальный хостинг с cPanelAutoSSL или Let's Encrypt через cPanelАвтоматическиМинимальная
[VPS-хостинг](https://alexhost.com/ru/vps/) с Apache/NginxCertbot (Let's Encrypt)Автоматически через таймер systemdНизкая
VPS с cPanel/WHMAutoSSL в WHMАвтоматическиМинимальная
[Выделенный сервер](https://alexhost.com/ru/dedicated-servers/)Certbot или платный сертификат от центра сертификацииВручную или автоматическиСредняя
Домен, проксируемый через CloudflareCloudflare SSL + сертификат источникаАвтоматически (Cloudflare)Низкая (но проверьте режим Full Strict)
Сайт электронной коммерции / с высоким уровнем доверияПлатный сертификат OV или EVЕжегодное ручное продлениеВысокая

Ключевые технические выводы

  • Установка сертификата и настройка WordPress — это отдельные шаги. Сертификат, установленный на уровне сервера, не заставляет WordPress автоматически генерировать HTTPS URL. Необходимо настроить оба компонента.
  • Смешанный контент — наиболее распространённая проблема после миграции. Выполните поиск и замену в базе данных с помощью WP-CLI перед активацией любого SSL-плагина, чтобы устранить жёстко заданные HTTP URL у источника.
  • Автоматическое продление Let's Encrypt необходимо проверять, а не принимать как данность. Запустите certbot renew --dry-run после первоначальной настройки и отслеживайте сроки действия сертификатов. Неудачное продление незаметно нарушит работу вашего сайта через 90 дней.
  • HSTS — это дорога с односторонним движением. Не устанавливайте длительный max-age и не включайте preload, пока каждый поддомен не получит действующий сертификат и вы не будете готовы постоянно использовать HTTPS.
  • Бесплатный SSL от Cloudflare по умолчанию не обеспечивает сквозное шифрование. Установите режим SSL/TLS на Full (Strict) и установите сертификат источника на вашем сервере, чтобы устранить этот пробел.
  • На виртуальном хостинге убедитесь, что SSL вашего хостинг-провайдера охватывает как корневой домен (yourdomain.com), так и поддомен www. Сертификат, выданный только для одного из них, вызовет ошибку несоответствия имени для другого.
  • Сериализованные данные в базах данных WordPress нельзя безопасно обновить с помощью обычного SQL REPLACE(). Всегда используйте WP-CLI или плагин с поддержкой сериализации.

Для сайтов, размещённых на виртуальном веб-хостинге, самый быстрый способ получить SSL — включить AutoSSL или Let's Encrypt через cPanel: весь процесс занимает менее пяти минут и не требует доступа к командной строке. Для более сложных развёртываний, требующих пользовательской настройки шифров, OCSP stapling или мультидоменных сертификатов, VPS с настраиваемой панелью управления предоставляет необходимый доступ на уровне сервера.

FAQ

Улучшает ли установка SSL-сертификата напрямую мои позиции в Google?

Google подтвердил HTTPS как сигнал ранжирования в 2014 году. Прямое улучшение позиций незначительно, однако косвенные преимущества — снижение показателя отказов из-за предупреждений безопасности браузера, право на использование HTTP/2 и HTTP/3, а также доверие пользователей — оказывают измеримый совокупный эффект на органическую видимость.

В чём разница между SSL и TLS?

SSL (Secure Sockets Layer) — устаревший предшественник TLS (Transport Layer Security). Все современные сертификаты используют TLS 1.2 или 1.3. Термин «SSL-сертификат» сохранился как отраслевое сокращение, однако ни один браузер или сервер не использовал настоящий SSL с 2015 года. Если ваш сервер всё ещё принимает SSLv3 или TLS 1.0, немедленно отключите их — они уязвимы для атак POODLE и BEAST соответственно.

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

Наиболее распространённая причина — ошибка смешанного контента: хотя бы один ресурс на странице загружается через HTTP. Откройте инструменты разработчика браузера, проверьте консоль на наличие предупреждений о смешанном контенте и используйте поиск и замену WP-CLI или плагин Really Simple SSL для перезаписи проблемных URL. Дополнительная причина — URL сайта WordPress в разделе Настройки > Общие всё ещё указывает на http://.

Как продлить сертификат Let's Encrypt до истечения срока действия?

Certbot устанавливает таймер systemd или задание cron, которое автоматически пытается продлить сертификат, когда до истечения срока его действия остаётся 30 дней. Чтобы принудительно выполнить немедленное продление, запустите sudo certbot renew --force-renewal. Для тестирования без внесения изменений запустите sudo certbot renew --dry-run. Проверьте журнал продления по адресу /var/log/letsencrypt/letsencrypt.log, если продление завершается ошибкой.

Можно ли установить SSL на WordPress без доступа к серверу или cPanel?

Да, через Cloudflare. Добавьте ваш домен в Cloudflare, укажите серверы имён Cloudflare и включите настройку SSL/TLS. Участок от посетителя до Cloudflare шифруется немедленно. Однако установите режим Full (Strict) и установите сертификат Cloudflare Origin Certificate на вашем сервере, чтобы также зашифровать участок от Cloudflare до источника. Без этого соединение между Cloudflare и вашим сервером остаётся незашифрованным, что является существенным пробелом в безопасности для любого сайта, обрабатывающего пользовательские данные.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать