ГлавнаяРазноеКак настроить HTTPS для WordPress

Как настроить HTTPS для WordPress

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

Что такое HTTPS

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

Для многих веб-сайтов протокол HTTPS уже давно стал стандартом (включая сайты WordPress.org и WordPress.com), а для интернет-магазинов, платежных систем, систем онлайн-банкинга и других ресурсов связанных с финансами и обработкой личных данных, HTTPS стал неотъемлемой и в некоторых случаях обязательной частью.

В августе 2014 года поисковый гигант Google объявил, что наличие поддержки протокола HTTPS уже является одним из факторов при ранжировании поисковой выдачи. Но стоит отметить, что подключив HTTPS ваш сайт не «взлетит» в поисковой выдаче, поскольку наличие HTTPS является не единственным и далеко не самым весомым фактором ранжирования, но при одинаковых прочих показателях, Google отдаст предпочтение защищенному сайту.

Следует также отметить, что HTTPS (поверх SSL/TLS) работает немного медленнее, чем обычный HTTP протокол, поскольку серверу и клиенту приходится тратить некоторое время на установление защищенного соединения и шифрование данных, но в большинстве случаев разница совсем не заметна.

SSL сертификаты

Для настройки HTTPS на вашем сайте, вам сперва потребуется приобрести SSL сертификат. Мы рекомендуем рассматривать только крупных и проверенных поставщиков SSL сертификатов, например Comodo, Thawte, VeriSign, GeoTrust и GoDaddy. Чаще всего сертификаты от этих поставщиков можно приобрести у вашего хостинг-провайдера или регистратора доменных имен.

Типы сертификатов бывают разными, например с возможностью использовать на одном домене или на нескольких, с возможностью использования на поддоменах, с различными типами шифрования данных и прочее. Цены на сертификаты в среднем начинаются от $9 в год (за самые простые сертификаты) и доходят до $400 в год и выше.

Процесс приобретения зависит от типа сертификата и поставщика. Мы рассмотрим пример с сертификатом PositiveSSL от Comodo, который можно приобрести за $9 в год у регистратора NameCheap. Такой сертификат подтверждает владение доменом и выпускается в течение нескольких часов. Некоторые более дорогие сертификаты требуют наличие юридического лица и оформление соответствующих юридических документов.

Создание и подписание SSL сертификата

Перед тем как подписать сертификат у поставщика, вам необходимо его создать. Сделать это можно с помощью утилиты openssl, которая по умолчанию присутствует в OS X и в большинстве Linux дистрибутивах. Если вы используете Windows и у вас нет SSH доступа к любому Linux серверу, то вы можете рассмотреть OpenSSL для Windows или Cygwin.

Для создания нового SSL сертификата и запрос на его подпись, воспользуйтесь следующей командой:

openssl req -nodes -newkey rsa:2048 -keyout wpmag.ru.key -out wpmag.ru.csr
Создание нового ключа в OS X

Создание нового ключа в OS X

После запуска, OpenSSL вас попросит заполнить некоторые данные о новом сертификате. При запросе Common Name (FDQN) введите ваш домен, без http:// и без www (даже если домен с www является для вас основным). После заполнения всех остальных данных у вас появится два новых файла. Для примеров мы будем использовать «wpmag.ru»:

  • wpmag.ru.key — приватный ключ к вашему новому сертификату
  • wpmag.ru.csr — запрос на подписание нового сертификата

Приватный ключ необходимо всегда хранить в тайне. Ни в коем случае не выкладывайте его в общий доступ, не пересылайте по электронной почте и не теряйте его. Файл с расширением .csr необходимо отправить на подпись поставщику SSL сертификатов.

В случае с PositiveSSL приобретенного через NameCheap перейдите в раздел SSL Certificates в панели управления и нажмите «Activate Now» рядом с вашим новым сертификатом. Обращаем ваше внимание, что у NameCheap вы можете подписать сертификат для вашего домена в зоне .ru, не зависимо от того, где вы приобрели сам домен.

На следующей странице необходимо выбрать тип используемого веб-сервера и вставить содержимое вашего файла .csr в текстовое поле:

Запрос на подпись SSL сертификата

Запрос на подпись SSL сертификата

После проверки запроса NameCheap предложит пройти процесс верификации вашего домена. Самым простым способом является верификация по электронной почте в рамках вашего домена, например admin@yourdomain.org.

После верификации домена и заполнения дополнительных данных на NameCheap, ваш сертификат отправится на подпись в Comodo и спустя несколько часов, подписанный сертификат придет вам на указанный электронный адрес. Как правило это zip-архив, содержащий несколько .crt файлов.

Для работы с веб-серверами nginx или Apache эти файлы необходимо «склеить» в один .crt файл в определенном порядке. Названия файлов в вашем случае могут отличаться, но главное, чтобы ваш сертификат (в наших примерах это wpmag.ru.crt) шел первым, а сертификат с «Root» в названии — последним.

  • wpmag.ru.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • COMODORSAAddTrustCA.crt
  • AddTrustExternalCARoot.crt

Сделать это можно в любом текстовом редакторе или с помощью утилиты cat на OS X и в Linux-подобных системах:

cat wpmag.ru.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > wpmag.ru-bundle.crt

Таким образом ваш SSL сертификат (вместе с другими) будет находится в новом файле wpmag.ru-bundle.crt, а ключ к сертификату — wpmag.ru.key, который вы сгенерировали ранее. Эти два файла потребуются для настройки HTTPS на вашем сервере.

Настройка SSL сертификата на сервере

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

Подключение SSL сертификата в nginx

В конфигурации веб-сервера nginx для вашего домена необходимо включить поддержку SSL (порт 443) и указать путь к файлам вашего сертификата:

server {
    listen              80;
    listen              443 ssl;
    server_name         wpmag.ru;
    ssl_certificate     /path/to/wpmag.ru-bundle.crt;
    ssl_certificate_key /path/to/wpmag.ru.key;
    ...
}

Убедитесь в том, что у пользователя nginx (или www-data) есть права на чтение файлов сертификата. Напоминаем, что файл .key является секретным ключом, и располагать его в общедоступном месте (например в директории htdocs, www или public_html) не следует.

После изменения файла конфигурации, перезагрузите сервис nginx.

Подключение SSL сертификата в Apache

Для работы с WordPress мы всегда рекомендуем веб-сервер nginx, но если по какой-либо причине вы все еще используете Apache, то подключить SSL сертификат можно следующими директивами внутри раздела VirtualHost или в общем разделе, в зависимости от вашей конфигурации:

SSLCertificateFile    /path/to/wpmag.ru-bundle.crt
SSLCertificateKeyFile /path/to/wpmag.ru.key

Если вы используете директиву VirtualHost, убедитесь в том, что она распространяется на 443-й порт, а не только на 80-й. После внесения изменений в конфигурацию, перезапустите сервис Apache.

Настройка HTTPS в WordPress

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

Изменить основной протокол сайта с HTTP на HTTPS можно в разделе Параметры → Общие в панели администрирования WordPress.

Настройки адреса сайта в WordPress

Настройки адреса сайта в WordPress

Эти же настройки можно задать в конфигурационном файле wp-config.php с помощью констант WP_HOME и WP_SITEURL. Это может быть полезно, если вы совершили ошибку при написании домена, и сайт вдруг стал недоступным.

После внесения изменений в адрес сайта, все ссылки будут по умолчанию использовать протокол HTTPS. К сожалению это не касается тех ссылок, которые вы разместили вручную например в статьях или страницах WordPress.

Замена http на https в статьях и страницах WordPress

Если у вас небольшое количество статей и страниц на сайте, вы можете вручную отредактировать их и изменить протокол в ссылках. Для существующих сайтов с большим объемом контента, такой метод будет слишком трудозатратным, поэтому предлагаем рассмотреть две альтернативы.

Если вы используете WP-CLI, то быстро выполнить поиск с заменой можно командой search-replace:

wp search-replace 'http://wpmag.ru' 'https://wpmag.ru'

Второй альтернативой является PHP-скрипт Search Replace DB, который также выполняет поиск с заменой, но предоставляет при этом графический интерфейс.

Использовать поиск с заменой напрямую в базе данных MySQL (в том числе и на файлах экспорта) мы не рекомендуем, поскольку некоторые данные WordPress хранит в сериализованных массивах, и подобные данные портятся при смене длинны строк (https длиннее чем http).

В любом случае, перед любыми манипуляциями с базой данных, советуем сделать резервную копию. После поиска с заменой, зайдите на ваш сайт и убедитесь в том, что все старые ссылки начинаются с https://.

Редирект с http на https

Последним шагом в настройке HTTPS является закрытие вашего HTTP сайта и перенаправление всего трафика на новый протокол с шифрованием. Сделать это надежнее всего на уровне веб-сервера.

В nginx необходимо разбить директиву server на два блока. Первый будет слушать 80-й порт и перенаправлять трафик на HTTPS, а второй (основной) блок будет выполнять запросы по 443 порту (не забудьте убрать 80-й из основного блока).

server {
    listen 80;
    server_name wpmag.ru;
    rewrite ^(.*) https://$host$1 permanent;
}

server {
    listen      443 ssl;
    server_name wpmag.ru;
    ...
}

В Apache внутри директивы VirtualHost, в общем разделе или в подключаемом файле .htaccess можно добавить следующее условие для редиректа на HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

После внесения изменений в конфигурацию, не забудьте перезагрузить веб-сервер.

Проверка правильности настройки HTTPS

Самой частой проблемой при настройки HTTPS в WordPress являются ссылки и ресурсы, загружаемые по протоколу HTTP. Например, если вы вставили изображение или JavaScript файл по протоколу HTTP, то по умолчанию он не будет исполняться. В таком случае надежнее всего загрузить данный файл на собственный сайт, и встроить его используя протокол HTTPS или с помощью протоколо-независимого формата //example.org/path/to/file.js.

В адресной строке браузеров Google Chrome и Firefox появятся специальные значки, если целостность HTTPS соединения нарушается какой-либо ссылкой на HTTP файл, так что при работе с вашим сайтом обращайте внимание на зеленый замок слева от адреса сайта. Этот замок должен всегда оставаться зеленым.

Иконка защищенного соединения в браузере Chrome

Иконка защищенного соединения в браузере Chrome

Также для проверки правильности настройки протокола HTTPS на вашем сервере, рекомендуем попробовать утилиту SSL Server Test от Qualys. Вбив адрес вашего сайта вы сможете получить подробный отчет о том, как настроен HTTPS на вашем сайте: валидность вашего сертификата, правильность редиректа с http на https, доступные методы шифрования и многое другое.

Заключение

Если вы содержите веб-сайт, который позволяет посетителям ввести адрес электронной почты (например оставив комментарий), номер телефона (заполнив форму обратной связи), и особенно если вы работаете с фактическими адресами, номерами кредитных карт и прочей конфиденциальной информацией, мы рекомендуем вам немедленно перейти на защищенный протокол HTTPS.

Учтите, что форма для входа в WordPress также является открытой для мошенников, если она не защищена протоколом HTTPS, особенно если вы часто посещаете свою «админку» из интернет-кафе, ресторанов и прочих публичных мест. То же самое касается работу с вашим сайтом на WordPress через мобильное приложение.

Если у вас остались вопросы по настройке HTTPS в WordPress, оставьте комментарий и мы обязательно вам ответим.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!