Бесплатный SSL для любого сайта WordPress

Опубликовано: 2022-03-10
Краткое резюме ↬ Если у вас есть веб-сайт электронной коммерции, SSL является обязательным для безопасной обработки кредитных карт. Но даже если вы не обрабатываете платежи, вам все равно следует серьезно подумать о безопасном HTTP (или HTTPS), особенно сейчас, когда я покажу вам, как быстро и бесплатно его настроить. Давайте начнем. Короче говоря, SSL — это «S» в HTTPS. Он добавляет к HTTP уровень шифрования, который гарантирует, что получатель действительно является тем, за кого себя выдает, и что только авторизованные получатели могут расшифровать сообщение, чтобы увидеть его содержимое.

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

Что такое SSL и почему меня это должно волновать?

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

Дальнейшее чтение на SmashingMag:

  • HTTPS везде с Nginx, Varnish и Apache
  • Как выпустить новый сертификат SSL со старым ключом SSL
  • Подготовка к HTTP/2: руководство для веб-дизайнеров

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

Еще после прыжка! Продолжить чтение ниже ↓
  • Достоверность . Даже у нетехнической аудитории маленький зеленый замок в адресной строке браузера ассоциируется с доверием и надежностью.
  • Защита паролем . Возможно, на вашем сайте размещены только видеоролики с котятами. Но если пользователи входят на ваш веб-сайт через Wi-Fi с паролем, который они также используют для онлайн-банкинга, то вы потенциально способствуете серьезному нарушению безопасности, публикуя эти учетные данные публично.
  • Защита будущего . Многие веб-сайты по-прежнему обслуживаются через HTTP, но существует неоспоримая тенденция к использованию HTTPS, и эта тенденция будет только усиливаться по мере того, как пользователи будут все больше узнавать о веб-безопасности. Будьте на правильной стороне истории.
  • SEO . Google официально объявил, что HTTPS используется в качестве сигнала ранжирования. Другими словами, Google награждает HTTPS-сайты, повышая их рейтинг в результатах поиска.

Распространенный аргумент против HTTPS заключается в том, что он снижает производительность. Правда, процесс шифрования и дешифрования требует дополнительных миллисекунд, но в большинстве ситуаций это незначительно, о чем свидетельствует тот факт, что такие компании, как Google и Facebook, заботящиеся о производительности, обслуживают весь свой контент через HTTPS. И действительно, HTTPS может усугубить существующие проблемы с производительностью, например, многие файлы CSS обслуживаются по отдельности, но это можно смягчить, если следовать основным передовым методам повышения производительности. А с принятием HTTP/2 стоимость производительности HTTPS стала еще ниже. Суть в том, что снижение производительности является значимым сдерживающим фактором только в том случае, если ваш веб-сайт либо гипероптимизирован, либо настолько неэффективен, что каждая миллисекунда имеет значение.

Как настроить HTTPS бесплатно

Первым шагом к бесплатной настройке HTTPS является регистрация в облачной службе DNS. Если вы понятия не имеете, что такое DNS, я рекомендую вам потратить минуту на изучение, прежде чем продолжить. Восхитительный фильм «Как работает DNS» отлично справляется с тем, чтобы превратить его в остроумный мультфильм. В противном случае просто знайте, что DNS — это система, посредством которой доменные имена, такие как example.com (понятные людям), связываются с IP-адресами, такими как 104.28.2.167 (которые понимают компьютеры). У вас есть много вариантов, но я поклонник CloudFlare, потому что его очень быстро настроить, панель инструментов интуитивно понятна, а бесплатный план доступен со многими мощными функциями.

Настройка CloudFlare

После регистрации учетной записи CloudFlare вы пройдете через простой мастер настройки вашего первого веб-сайта, который завершится инструкциями о том, как войти в регистратор вашего домена и указать серверы имен для CloudFlare. Для распространения изменения потребуется некоторое время, но когда оно будет завершено, CloudFlare будет размещать записи DNS вашего веб-сайта. Затем включите функцию «гибкого SSL» в CloudFlare.

Панель инструментов CloudFlare
Панель инструментов CloudFlare с настройкой SSL (см. большую версию)

Выбор параметра «гибкий SSL» важен, поскольку он не требует от вас покупки и установки собственного сертификата SSL на сервере вашего веб-сайта. Вот схема того, что происходит.

Гибкая схема SSL CloudFlare
Гибкая диаграмма SSL CloudFlare (Просмотреть большую версию)

Как видите, CloudFlare выступает в роли посредника для защиты трафика между вашим сайтом и клиентом. Если бы это был статический веб-сайт HTML, теперь вы могли бы подключиться к нему через HTTPS ( https://yourdomain.com ). Однако WordPress требует дополнительной настройки для работы с измененным протоколом.

Перенастройка WordPress с HTTP на HTTPS

Сначала вам нужно будет обновить настройки «Адрес WordPress» и «Адрес сайта» на панели инструментов в разделе «Настройки» → «Общие». Когда вы это сделаете, вам придется снова войти в панель управления.

Панель управления WordPress
Панель управления WordPress с настройками URL (см. большую версию)

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

На этом этапе вы должны иметь возможность посещать домашнюю страницу веб-сайта через HTTPS. Однако ссылки на страницы по-прежнему будут указывать на URL-адреса HTTP. WordPress хранит ссылки на страницы и изображения как абсолютные URL-адреса, что означает, что полный URL-адрес, включая протокол, сохраняется в базе данных. Чтобы убедиться, что весь веб-сайт последовательно обслуживается через HTTPS (без предупреждений о смешанном контенте), вам необходимо обновить свой устаревший контент.

Обновление устаревшего контента

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

Рискуя констатировать очевидное, замените yourdomain.com в следующих запросах на ваш фактический домен . Кроме того, если вы настроили префикс таблицы WordPress, замените wp_ соответствующим префиксом.

Во-первых, обновите URL-адреса сообщений и страниц.

 UPDATE wp_posts SET guid = replace(guid, 'https://yourdomain.com','https://yourdomain.com');

[ОБНОВЛЕНИЕ: как обсуждалось в комментариях, поле guid не следует редактировать.]

Также обновите таблицу wp_postmeta .

 UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://yourdomain.com','https://yourdomain.com');

Наконец, обновите фактическое содержание сообщений или страниц. Это обновит все обратные ссылки на HTTPS.

 UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://yourdomain.com', 'https://yourdomain.com');

После выполнения этих запросов вы захотите обновить свои постоянные ссылки, перейдя в «Настройки» → «Постоянные ссылки». Просто верните настройку на значение по умолчанию, а затем верните ее на ту настройку, которую вы использовали изначально.

Теперь вы должны иметь возможность щелкать меню и ссылки по всему веб-сайту, а протокол должен оставаться HTTPS.

Устранение неполадок с предупреждениями о смешанном содержимом

В зависимости от используемой темы и подключаемых модулей вы можете получить предупреждение в адресной строке о том, что определенные ресурсы не защищены. Если ошибки связаны с активами, добавленными вашей собственной пользовательской темой или плагином, убедитесь, что файлы JavaScript и CSS правильно добавлены в очередь, а не жестко заданы URL-адреса, начинающиеся с HTTP . Большинство браузеров позволяют расширить предупреждение, чтобы показать конкретные запросы, вызывающие ошибку. Вы также можете попробовать бесплатный плагин, такой как SSL Insecure Content Fixer, который попытается исправить сторонние плагины, которые не смогли этого сделать.

К этому моменту вы должны увидеть зеленый замок в адресной строке при посещении вашего веб-сайта. Если вы не используете плагин для электронной коммерции, такой как WooCommerce или WP eCommerce, все готово! Если да, то есть важный последний шаг.

Получение гибкого SSL для работы с плагинами электронной коммерции

В WordPress есть основная функция is_SSL() , на которую плагины полагаются, чтобы определить, зашифрован ли трафик с помощью SSL. Только с помощью описанного выше метода эта функция вернет false , потому что шифрование осуществляется только между CloudFlare и клиентом. Трафик, с которым взаимодействует PHP, не зашифрован, поэтому суперглобальный параметр, который проверяет эта функция (например, $_SERVER['HTTPS'] ), будет бесполезен. Для наших целей соответствующей переменной является $_SERVER['HTTP_X_FORWARDED_PROTO'] , которую на момент написания WordPress не распознал. Просьба изменить это давняя, но она еще не решена.

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

Гибкий SSL не является полным SSL

Инициатива CloudFlare «Универсальный SSL» — интересная попытка сделать Интернет более безопасным, но она не лишена противоречий. Основная проблема заключается в том, что гибкий SSL не шифрует вторую половину пути трафика (до вашего сервера), но в настоящее время браузер все еще показывает тот же зеленый замок, который мы привыкли ассоциировать с полным SSL. CloudFlare предлагает следующее обоснование в своем блоге:

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

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

Перенаправление HTTP-запросов на HTTPS

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

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://yourdomain.com/$1 [R=301,L] </IfModule>

Если файл .htaccess уже существует, будьте осторожны, чтобы ничего не изменить между строками # BEGIN WordPress и # END WordPress в этом файле. Эти строки управляются WordPress, и всякий раз, когда постоянные ссылки обновляются, содержимое этого раздела перезаписывается.

Поздравления

Переведя свой сайт на HTTPS, вы улучшили свой сайт, защитили пользователей и поучаствовали в развитии Интернета. И тебе это ничего не стоило!