wordpress-http-to-https

Перевел данный WordPress сайт с протокола http на https. Делюсь своим опытом и привожу список действий, которые выполнялись в процессе перехода на https. Также стоит ознакомиться с примечаниями. Все необходимые ссылки указаны в конце статьи.

  1. Об  SSL-сертификате. В данном случае использовался бесплатный SSL-сертификат от CloudFlare. При использовании других сертификатов действия будут отличаться.
  2. Регистрируемся на сервисе CloudFlare (CF)
  3. Добавляем свой домен в CF
  4. Получаем от CF новые NS-записи для домена
  5. Заходим в панель регистратора и меняем старые NS-записи на полученные от CloudFlare (потребуется некоторое время, чтобы изменения начали действовать)
  6. Убедиться, что у домена активный статус (зеленый цвет)
  7. На вкладке Crypto выбираем тип сертификата — Flexible, в случае если сайт не использовал своих сертификатов
  8. Происходит инициализация получения сертификата (authorizing certificate). В одном случае получил сертификат через час, в другом — пришлось ложиться спать и уже получить сертификат на следующий день. На вкладке Crypto должен появиться значок active certificate
  9. До изменения на вкладке Page Rules сайт будет доступен по обоим протоколам. И по http, и по https
  10. Переходим на свой WordPress сайт через https протокол, скорее всего не все будет в порядке
  11. Делаем бекап!
  12. Устанавливаем плагин cloudflare-flexible-ssl (альтернатива — плагин cloudflare). Переходим на сайт, проверяем, должно быть получше
  13. В базе данных WordPress остается куча ссылок с http, нужно теперь поменять их все на https. Для этого устанавливаем плагин Better Search Replace
  14. Производим замены http://example.com на https://example.com (замену в таблице wp_options я оставил напоследок, см п.18) а также для картинок, которые вставлялись со сторонних сайтов с src="http:// на src="//
  15. Можно воспользоваться поиском через PhpMyAdmin, чтобы убедиться, что все необходимые замены сделаны. Периодически тестируем сайт и смотрим, где еще остаются http протоколы
  16. Многое зависит от того какие плагины используются на WordPress сайте, где-то надо почистить кеш, где-то изменить настройки, какие-то возможно перестанут работать как нужно
  17. После всех доработок можно делать переадресацию с http на https. заходим в CF на вкладку Page Rules и прописываем правило http://*example.com* и выставляем флаг Always use https. Сохраняем. Через некоторое время действия вступят в силу
  18. В админке WordPress (настройки-общие) меняем адрес сайта на новый (https вместо http). Актуально, если в п.14 была выборочная замена. Это я оставил напоследок, убедившись, что все работает.
  19. Проверяем работу сайта и наличие зеленого замочка на всех страницах сайтах. Если замочек не зеленый, скорее всего есть ошибка blocked mixed content — значит на этой странице что-то подгружается по http. Исправляем обнаруженные проблемы
  20. Плагин cloudflare-flexible-ssl остается постоянно активированным, плагин Better Search Replace можно удалить
  21. Сообщаем поисковикам, что адрес сайта изменился. Google — в Search Console добавляем новый сайт с https, так как по старому адресу будет 301 редирект, то все остальное гугл сделает сам. Yandex — в яндекс вебмастер (только в новой версии) в разделе «Настройка индексирования — Переезд сайта» ставим галочку «добавить HTTPS». Сохраняем
  22. Постепенно изучаем возможности CloudFlare, настраиваем кеширование, блокировки и прочее. Это уже отдельная тема для разговора
  23. Все вышеописанное проводится на свой страх и риск! Я лишь описал свой опыт и делюсь им с вами.

Примечания:

  • Способ работает по идее на любых хостингах, так как от CF до вашего хостера идет уже http-запрос
  • Выделенный IP-адрес не требуется
  • Новые сайты лучше сразу делать на HTTPS, меньше головной боли с переходом, более лояльное отношение поисковых систем
  • Надо понимать, что кроме бесплатного SSL-сертификата вы получаете фильтрацию трафика и прочие примочки от CF. Возможно кому-то нужен только сертификат (см. Letsencrypt)
  • Реальный IP посетителей сайта подменяется на IP-адреса из сети CloudFlare, так как CF действует подобно обратному прокси (reverse proxy). Например IP сети CF будет теперь виден в комментариях, чтобы не подумали, что CF вас спамит. Требуются дополнительные плагины, чтобы видеть реальный IP
  • Некоторые старые браузеры не смогут зайти на сайт. Нужна поддержка SNI (Server Name Indication)
  • Набирает оборота проект Let’s Encrypt — это сервис бесплатных SSL-сертификатов, без лишних услуг, в отличии от CF. Но этот вариант подходит уже не для всех хостингов, минимум VDS/VPS или спрашивать о поддержке данного сертификата у хостера. Во многих случаях вариант с Letsencrypt будет предпочтительнее.
  • CloudFlare рекомендует WordPress пользователям отключать производительность в админке сайта. И до отключения проблем замечено не было, но можно добавить правило на вкладке Page Rules для *mydomain.com/wp-admin* — Disable Performance

Ссылки:

  • CloudFlare — сервис, который позволяет сделать Ваш сайт быстрее, за счет организации кеширования и защищённей, за счет фильтрации запросов, похожих на атаки, выдает бесплатный SSL-сертификат
  • www.whatsmydns.net — проверка DNS записей домена с разных локаций
  • SSL Server Test — тест проверки качества работы вашего SSL-сертификата. Обычно оценка ‘A’ для сертификатов от CloudFlare, и даже ‘A+’ после включения поддержки HTTP Strict Transport Security (HSTS)
  • How to Validate a Let’s Encrypt Certificate on a Site Already Active on CloudFlare — о подключении своего сертификата на стороне сервера от Letsencrypt в дополнение к работающему от CloudFlare
  • Moving to HTTPS on WordPress — Chris Coyier, основатель css-tricks рассказывает как он переводил свой WordPress сайт с http на https, он использовал платный сертификат и не использовал CloudFlare
  • How do I fix the infinite redirect loop error after enabling Flexible SSL with WordPress? — как избежать вечного цикла, после подключения SSL, статья от поддержки CloudFlare.
  • CloudFlare Flexible SSL — WordPress плагин, помогающий произвести интеграцию с CloudFlare
  • Better Search Replace — WordPress плагин для поиска и замены текста в базе данных WordPress
  • Getting Started with CloudFlare Security — видеокурс по работе с CloudFlare, стоит посмотреть, перед тем как проводить все вышеуказанное
  • Переход на HTTPS. Особенности и решение проблем — Хорошее видео с вебинара о Переходе на HTTPS от Сергея Кокшарова, поможет убедиться в необходимости перехода на https.