Главная » Статьи » Интернет? Не! Не слышал...

Поддержка SSL в WordPress
Статья Поддержка SSL в WordPress


По мере развития сети Интернет пользователи и владельцы сайтов всё более серьёзно относятся к безопасности, поэтому использование SSL-соединения становится повсеместной практикой.

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

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

Википедия определяет SSLтак:

SSL (от английского Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, который обеспечивает безопасность связи. Он использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование для сохранения конфиденциальности, коды аутентификации сообщений для целостности сообщений.

Частое использование протокола SSL привело к формированию протокола HTTPS (Hypertext Transfer Protocol Secure), поддерживающего шифрование кириллическим доменом. Данные, которые передаются по протоколу HTTPS, «упаковываются» в криптографический протокол SSL, тем самым обеспечивая защиту этих данных.
Зачем использовать SSL?

Безопасность

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

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

Доверие

Наличие валидного SSL-сертификата является общепризнанным признаком респектабельности сайта. Многие пользователи привыкли смотреть на “https://” в адресной строке браузера, прежде чем вводить какую-либо информацию.

SEO

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

Отказ от ответственности

Прежде чем начать работать над сайтом, сделайте резервную копию. По возможности работайте на локальной копии сайта, а затем переносите всё в онлайн. Авторы статьи не несут ответственности за потерю данных или другие проблемы, возникшие у вас при реализации описанных здесь процедур.

Защита администраторской части WordPress

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

Итак, откройте файл wp-config.php и установите константу FORCE_SSL_ADMIN в значение true. Соответствующий код должен выглядеть примерно так:

define('FORCE_SSL_ADMIN', true);
Добавив или отредактировав нужную строку, не забудьте сохранить изменения. Обновив сайт, вы должны заметить, что теперь при входе в административную часть происходит переадресация на протокол HTTPS.

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

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

Вы можете установить плагин “WordPress HTTPS” из панели управления WordPress.

Безопасность отдельных страниц или публикаций

Когда вы установите плагин “WordPress HTTPS”, каждый объект на вашем сайте приобретёт специальный метабокс, который позволит вам переадресовать запросы пользователей сайта, обращённые к этому объекту и его дочерним объектам, на протокол HTTPS:

Безопасность всего сайта

Обезопасить весь сайт можно на странице настроек HTTPS. Выбрав меню “HTTPS” в панели управления сайтом, можно настроить следующие параметры:

Force SSL Administration (использовать только SSL для администрирования): если вы уже выполнили нашу рекомендацию по защите административного интерфейса WordPress, приведённую нами в начале статьи, этот чекбокс будет включен. Если нет – включите его для достижения того же эффекта;
Force SSL Exclusively: (использовать исключительно SSL): если выбрать этот чекбокс, каждая страница, для которой параметр HTTPS не задан отдельно, будет переадресовывать пользователя на свою HTTPS-версию;
Remove Insecure Elements (удалить небезопасные элементы): теперь все элементы со ссылками на HTTP-протокол удаляются со страниц. Используйте эту опцию с осторожностью, так как она может помешать работе плагинов, ссылающихся на внешние ресурсы:

Наконец, внизу страницы присутствует окно ввода текста, отмеченное как URL Filters. Туда можно ввести ссылки на внутренние ресурсы, которые необходимо защитить при помощи SSL. Допускается использование регулярных выражений. Пример, предлагаемый плагином: защитить все адреса, начинающиеся со /store/.

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

Если такое поведение сайта – именно то, чего вы добиваетесь, вам следует также сменить настройки некоторых стандартных адресов сайта. Об этом мы поговорим в следующей части статьи:

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

Этот приём подходит в том случае, если вы вообще не хотите использовать небезопасное соединение на своём сайте. Всё, что вам нужно – переадресовывать HTTP-трафик при помощи кода 301 (постоянное перемещение). Это можно сделать при помощи PHP-кода, но проще и эффективней в данной ситуации использовать директивы .htaccess.

Подразумевается, что ваш сайт использует веб-сервер Apache с модулем mod_rewrite. Это – весьма распространённая конфигурация хостинга на Linux, но на всякий случай уточните этот вопрос у хостера, прежде чем действовать.

Сначала настроим WordPress, а потом займёмся .htaccess. В панели администрирования WordPress выберите в меню «Settings» («Установки») – «General» («Общие»). Измените поля «WordPress Address (URL)» и «Site Address (URL) так, чтобы вместо «http://» в них значилось «https://». Нажмите кнопку «Сохранить изменения» (Save Changes) в самом низу страницы.

Произведенные изменения дадут WordPress указание использовать протокол HTTPS при генерации ссылок на наш сайт. Но посетители всё ещё смогут заходить на него по HTTP. Здесь нам и пригодится .htaccess.

Если вы используете генерацию постоянных ссылок (permalinks), то файл .htaccess уже имеется в корне вашего сайта. Если нет, вы можете создать его в любом текстовом редакторе. Имя этого файла не имеет расширения.

Оно начинается с точки, что для UNIX-подобных систем означает, что программы могут скрывать его наличие в системе от пользователя аналогично файлам с атрибутом «hidden» в файловой системе Windows.

Ваш файл .htaccess может быть пустым, либо уже содержать какой-то код, например, стандартный код реализации постоянных ссылок (permalink):

# BEGIN WordPress

RewriteEngine On
RewriteBase /secure/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /secure/index.php [L]

# END WordPress
Нам необходимо разместить в начале файла .htaccess следующие директивы:

# Begin HTTPS

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

# END HTTPS
Замените https://www.yourdomain.com/ в нашем примере на новый адрес вашего сайта.

Первая и последняя строки нашего примера – комментарии, нужные для того, чтобы нам было проще поддерживать конфигурацию нашего сайта. Директива “IfModule mod_rewrite.c” осуществляет проверку на наличие модуля mod_rewrite в конфигурации нашего хостинга.

Наличие этой проверки позволит остальным директивам .htaccess выполниться в том случае, если этот модуль не установлен. Без такой проверки они бы вызывали сбой.

Далее мы включаем механизм замены адреса (“RewriteEngine On”) и устанавливаем условие (RewriteCond), при котором будет происходить замена – доступ к сайту через порт HTTP (80). Наконец, RewriteRule определяет, на что будет заменяться адрес – на каталог secure, который переадресует запрос к HTTPS-части сайта.

Установив данные правила, вы можете проверить их работу, зайдя на сайт по адресу, начинающемуся с “http://”. Если всё прошло гладко, в адресной строке браузера появится “https://”.

Какое решение выбрать?

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

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

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

С другой стороны, прямое редактирование PHP-кода является более изящным и управляемым решением, и если вас устраивает его функциональность, вы вполне можете остановиться на нём.

Потенциальные проблемы

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

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

Иногда можно обойти острые углы, используя независимые от протокола ссылки. Например, мы хотим встроить шрифт Open Sans из внешнего источника (Google CDN) в обе части нашего сайта. В таком случае мы можем сослаться на него так:


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

В большинстве случаев этот метод просто работает и спасает нас от лишней головной боли. Разумеется, его можно применять не только в HTML, но и в CSS.
Категория: Интернет? Не! Не слышал... | Добавил: Lika (07.10.2014)
Просмотров: 1819 | Теги: SSL, WordPress | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]