Использование SSL и HTTPS в WordPress

Ключевым моментом в обеспечении безопасности WordPress-сайта является установка правильного SSL-сертификата. Это даст возможность пользователям обмениваться информацией с вашим сайтом через безопасный шифрованный канал:

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

Что такое SSL?

Протокол SSL является стандартом в обмене зашифрованной информацией между веб-сервером и браузером. Не вдаваясь в детали, объяснить это можно так: SSL устанавливает доверительные отношения между сервером и клиентом.

Когда доверие установлено, сервер может зашифровать данные (например, веб-страницу) таким образом, что расшифровать эти данные может только клиент. Необходимость такого шифрования проистекает из того факта, что Интернет – это сеть общего пользования, и информация, пересылаемая между двумя точками, может на определённых этапах быть доступна другим участникам сети.

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

Использование SSL требует от сайта установки специального сертификата, который однозначно идентифицирует своего владельца. Такой сертификат приобретается на определённый срок у специальных вендоров. Большинство браузеров сигнализируют о наличии валидного SSL-сертификата иконкой с изображением замка:

Что такое SSL?

SSL особенно необходим сайтам, занимающимся электронной коммерцией и имеющим дело с данными платежей, кредитных карт и т. д.

Я не буду рассказывать о процессе приобретения и установки SSL-сертификата, так как он отличается у разных провайдеров сертификатов и хостеров. Хороший хостинг-провайдер обязательно посодействует вам в приобретении сертификата и настройке веб-сервера.

Когда сертификат приобретён и сервер настроен на его использование, любой пользователь сможет просмотреть страницы вашего сайта через SSL. Я говорю «сможет», а не «должен будет», так как на этом этапе настройка SSL на сайте не закончена. Чтобы перенаправлять пользователей к безопасному соединению, необходимо проделать определенные настройки в WordPress.

Когда мы говорим «использовать SSL», мы имеем в виду, что обмен информацией между сайтом и посетителем происходит через HTTPS-протокол вместо обычного HTTP. HTTPS шифрует данные HTTP при помощи протокола SSL, заверяет их сертификатом и отправляет через отдельный порт, но это ещё не всё.

Когда использовать HTTPS

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

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

Недавно Google рассказал, что сайты, поддерживающие HTTPS для анонимных пользователей, имеют более высокие позиции в поисковой выдаче.

Это значит, что использование HTTPS можно считать частью SEO-стратегии, а не только мерой безопасности. Также тотальное шифрование устраняет человеческие ошибки в определении конфиденциальности той или иной информации.

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

Поскольку время загрузки страницы является важным параметром с точки зрения эргономики, да и SEO-оптимизации тоже, необходимо уточнить, достаточно ли у нас ресурсов для безболезненного внедрения шифрования всего трафика, или в нашем случае лучше определиться с выбором наиболее чувствительных данных, а остальное пересылать по открытому каналу.

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

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

Установка SSL вручную

В ядре WordPress есть константа, которую вы можете определить в файле wp-config.php, чтобы ограничить работу администратора безопасным соединением. Эта константа – FORCE_SSL_ADMIN – требует наличия на сервере валидного SSL-сертификата. По умолчанию эта функция выключена. Чтобы включить её, добавьте в файл wp-config.php следующий код:

define( 'FORCE_SSL_ADMIN', true);

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

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

Использование плагина WordPress HTTPS

Есть отличный бесплатный плагин – WordPress HTTPS (SSL), который очень легко позволяет осуществлять самые сложные настройки SSL.

Этот плагин давно не обновлялся и, как видно из каталога плагинов, тестировался только для WordPress версии 3.5.2, но из своего опыта могу сказать, что он отлично работает с версиями 3.9 и 4.0.

Этот плагин позволяет задать глобальные настройки использования SSL на вашем сайте аналогично использованию констант в wp-config.php. Если же вы не хотите использовать шифрование на всём сайте, он поможет установить принудительное использование HTTPS для отдельных постов, страниц или разделов.

Процесс настройки этого плагина очень прост. Опции, относящиеся ко всему сайту (или сайтам, если у вас мультисайтовая инсталляция WordPress), можно настраивать на странице плагина в панели управления.

С опциями безопасности отдельных страниц и постов можно работать при помощи метабокса в редакторе публикаций. Это удобно, если нужно обезопасить доступ только к некоторым страницам.

Безопасность сайта – это не только SSL!

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

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

Все меры безопасности должны работать в комплексе. Если, к примеру, троян проник на сайт через shell, сайт уже скомпрометирован – не важно, что его трафик при этом шифруется. Все потенциальные проблемы должны быть закрыты соответствующими плагинами (WordFence, iThemes Security) или сервисами (Sucuri).

Установка SSL-сертификата и настройка HTTPS – лишь одно звено в цепи мер, направленных на обеспечение безопасности WordPress-сайта. Надеемся, что наша статья облегчит для вас этот шаг.

РедакцияПеревод статьи «How To Use SSL & HTTPS With WordPress»