Перейти к содержимому

WordPress. Перевод сайта с протокола http на https

Перевод с протокола http на https сайтов под управлением WordPress. Получение бесплатного SSL-сертификата на хостинге Евробайт. Ссылка на подробную инструкцию «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?»

  1. Let’s Encrypt и Евробайт
  2. Смена внутренних ссылок
  3. Генерация и установка SSL-сертификата
  4. Изменение настроек сайта
  5. Регистрация сайта с https в Яндекс Вебмастер
  6. Регистрация сайта с https в Search Console
  7. Перенаправление трафика с http на https
  8. Продление SSL-сертификата

Let’s Encrypt и Евробайт

Инструкция «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?» предназначена не только для сайтов под управлением WordPress, но и для всех остальных. Я выбрал бесплатный SSL-сертификат, так как на моих сайтах не хранятся личные данные пользователей, не осуществляются денежные операции и другие действия, требующие надежной защиты. К недостаткам бесплатных SSL-сертификатов, выпущенных Let’s Encrypt, можно отнести:

  • небольшой срок действия - Let’s Encrypt выпускает сертификаты всего на 3 месяца;
  • создавать новые сертификаты и обновлять их пользователь должен самостоятельно, что сделать на Let’s Encrypt достаточно сложно;
  • отсутствие у Let’s Encrypt службы техподдержки, которая есть у удостоверяющих центров, работающих на платной основе.

У SSL-сертификатов, выпущенных Let’s Encrypt, только одно преимущество - они бесплатны. Хостинг-провайдер Евробайт добавляет еще одно преимущество - упрощение процедур создания и обновления сертификатов, которые можно провести непосредственно с хостинга.

Перед переводом сайта с протокола http на https обязательно делаем резервную копию всего сайта: файлов и базы данных.

Смена внутренних ссылок

В первую очередь необходимо поменять все внутренние абсолютные ссылки на относительные, чтобы они были доступны и по http, и по https. Я меняю ссылки на относительные только по протоколу, с сохранением домена: «http://my-site.ru/» на «//my-site.ru/». (Прочитав на нескольких ресурсах о преимуществах и недостатках абсолютных и относительных ссылок, решил, что на моих сайтах будут абсолютные, поэтому на предыдущем сайте, переведенном с протокола http на https, уже преобразовал обратно ссылки на абсолютные, добавив https).

Для смены внутренних ссылок на сайте под управлением WordPress устанавливаем бесплатный плагин Velvet Blues Update URLs и активируем его. Перед изменением ссылок делаем резервную копию базы данных, если не сделали этого в самом начале, в настройках плагина есть такая рекомендация - WE RECOMMEND THAT YOU BACKUP YOUR WEBSITE. После этого заходим в интерфейс плагина через правое меню: Инструменты → Update URLs.

Интерфейс плагина Velvet Blues Update URLs
Интерфейс плагина Velvet Blues Update URLs

Вместо http://www.oldurl.com вписываем адрес своего домена с «http:» - http://mysite.ru, а вместо http://www.newurl.com - адрес своего домена без «http:» - //mysite.ru, и нажимаем кнопку «Update URLs NOW».

Мне хватило установленной галочки только в первом пункте (замена адресов в контенте страниц и записей). Перевести текст в интерфейсе плагина Velvet Blues Update URLs можно с помощью переводчика Google.

Генерация и установка SSL-сертификата

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

К таким хостинг-провайдерам относится Евробайт.  В его справочной системе есть подробная инструкция «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?». Let’s Encrypt - это удостоверяющий центр по выпуску бесплатных SSL-сертификатов. Спонсоры этого подарка судьбы указаны на главной странице его сайта.

Если у вас тоже хостинг-провайдер Евробайт, с главной страницы его сайта перейдите в раздел «Помощь и поддержка».

Скриншот главной страницы сайта Евробайт
Главная страница сайта хостинг-провайдера Евробайт

На открывшейся странице введите в поле поиска строку «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?» и ссылка на инструкцию отобразится в первой позиции. Это на случай, если прямая ссылка на инструкцию Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге? изменится, такое уже было. Сама инструкция тоже редактировалась и на 19.08.2017 она выглядит так (копия с сайта Евробайт):


1) Подключаемся по SSH в свой аккаунт.
2) Создадим директорию ~/private:

mkdir ~/private

3) Переходим в директорию ~/private:

cd ~/private/

4) Скачиваем скрипт letsencrypt_eb.sh:

wget http://soft.eurodir.ru/letsencrypt_eb.sh

5) Запускаем его:

sh letsencrypt_eb.sh domain.com

Вместо domain.com укажите свой домен

6) В директории ~/private/certs/$DOMAIN создадутся необходимые файлы:

~/private/certs/$DOMAIN/fullchain.pem

~/private/certs/$DOMAIN/privkey.pem

7) Заходим в панель управления ISPmanager в раздел "SSL сертификаты". Нажимаем "Создать". Вносим данные из файлов в соответствующие поля:

Изображение окна Новый SSL сертификат

~/private/certs/$DOMAIN/privkey.pem - для поля "Приватный ключ"
~/private/certs/$DOMAIN/cert.pem - для поля "Сертификат"
~/private/certs/$DOMAIN/chain.pem - для поля "Цепочка сертификатов"

Сохраняем изменения.

8) Переходим в раздел "WWW-домены", кликаем дважды на нужный домен и включаем галочку "SSL", выбираем созданный недавно сертификат и сохраняем изменения.

Для обновления сертификата необходимо:

1) Переходим в директорию со скриптом:

cd ~/private/

2) Запускаем скрипт

sh letsencrypt_eb.sh domain.com

Вместо domain.com укажите свой домен

3) Обновляем сертификат в панели ISPmanager используя новые файлы с директории /private/certs/$DOMAIN/.

Обновление сертификата можно произвести не ранее, чем за 30 дней до окончания срока действия сертификата.

Важно: при повторной генерации сертификата используется корневая папка указанного домена. Если у вас в ней лежит файл .htaccess с настроенным перенаправлением на https, то следует перед запуском скрипта переименовать файл, например в .htaccess_ После завершения работы скрипта не забудьте переименовать файл обратно.


Замечание по инструкции: у меня получается  обновить сертификат только с выполнением повторного скачивания скрипта letsencrypt_eb.sh.

Первым пунктом инструкции видим: Подключаемся по SSH в свой аккаунт. Чтобы войти в свой аккаунт по SSH, скачиваем бесплатную утилиту putty.exe с этой страницы в разделе «Alternative binary files» (32-битную или 64-битную версию на выбор). Открываем скачанную программу и входим в биллинг-панель по реквизитам, полученным в письме от провайдера Евробайт об активации хостинга.

Письмо об активации хостинга Евробайт
Письмо об активации хостинга Евробайт

Используем для входа в аккаунт адрес, логин и пароль раздела FTP/SSH.

Открываем программу putty.exe:

Окно настроек утилиты putty
Окно настроек утилиты putty.exe

Вписываем в Host Name указанный адрес в разделе FTP/SSH и нажимаем кнопку Open. Открывается окно командной строки с приглашением ввести логин:

Рабочее окно утилиты putty
Рабочее окно утилиты putty.exe

Вводим логин - жмем Enter, появляется приглашение ввести пароль, вводим пароль (при вводе пароля, в целях безопасности, никакие знаки в командной строке не отображаются) - жмем Enter. С первого раза войти в аккаунт по SSH получается не всегда, иногда сервер прерывает соединение.

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

Далее, поочередно копируем команды согласно инструкции «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?», вставляем их в командную строку утилиты putty.exe и жмем Enter.

Не забываем в пункте 5 заменить domain.com на свой домен со своим расширением.

Пункт 6 выполнять не нужно - это констатация факта.

Файлы, указанные в пункте 7, будут выглядеть в FileZilla так:

Путь к сертификату в FileZilla
Путь к сертификату в FileZilla

В контекстном меню нужного файла выбираем «Просмотр/Правка», в открывшемся файле копируем текст и вставляем в соответствующее окно формы «Новый SSL сертификат».

Обратите внимание, если при попытке создать или обновить сертификат выводится сообщение о неверной цепочке сертификатов, уберите в конце вставленного текста из файла chain.pem символ переноса строки кнопкой «Backspace».

Чтобы сертификат применился для нашего домена, переходим в ISPmanager на вкладку  «WWW домены», выделяем домен и нажимаем кнопку «Изменить». В открывшемся окне «Параметры WWW домена» ставим галочку в окошке SSL, появятся окошки «SSL порт» и «SSL сертификат». SSL порт отобразится автоматически (на изображении его номер стерт) а в окошке «SSL сертификат» выбираем только что созданный сертификат.

Окно «Параметры WWW домена»
Окно «Параметры WWW домена»

На изображении кроме номера «SSL порта» стерта и другая служебная информация.

Изменение настроек сайта

В админ-панели WordPress на левой стороне выбираем «Настройки» → «Общие». В параметрах «Адрес WordPress (URL)» и «Адрес сайта (URL)» меняем «http» на «https».

Далее редактируем файл robots.txt: в параметрах директив «Host» и «Sitemap» тоже меняем «http» на «https».

Кстати, индексирующий робот Яндекса начал понимать директиву User-agent: *, и если директивы для робота Яндекса не отличаются от других, то в отдельный блок их теперь выделять не обязательно.

Регистрация сайта с https в Яндекс Вебмастер

Добавляем в Яндекс Вебмастер новый сайт с https ( это будет новое зеркало нашего старого сайта с http).

Выбираем в Яндекс Вебмастер новый сайт и добавляем в него адрес файла Sitemap с https в разделе «Индексирование» → «Файлы Sitemap».

После этого, выбираем старый сайт с http и в разделе «Индексирование» → «Переезд сайта» устанавливаем галочку «Добавить HTTPS» и нажимаем кнопку «Сохранить»:

Переезд сайта в Яндекс Вебмастер
Переезд сайта в Яндекс Вебмастер

У меня склейка зеркал произошла через 8 дней:

Склейка зеркал в Яндексе
Пример склеенных зеркал в Яндекс Вебмастер

Вместо ссылки «Переезд сайта», у старого сайта с http в Яндекс Вебмастер появилась ссылка - «Отклейка зеркал».

Цитата из раздела Яндекса «Помощь»:

Изменение адреса может занимать значительное количество времени. Яндекс не гарантирует сохранение количества страниц сайта в поиске, его позиций или посещаемости в случае изменения главного зеркала или склейки зеркал.

Как ни странно, через 13 дней обнаружил, что зеркала расклеились, у старого сайта с http вместо «Отклейка зеркал» снова появился раздел «Переезд сайта». Пока удивлялся и писал эти строки, зеркала вновь оказались склеенными. Чудеса, да и только.

Регистрация сайта с https в Search Console

С рекомендациями Google по переносу сайта с HTTP на HTTPS можно ознакомиться в Справке Search Console.

Не знаю, правильно или нет, но мои действия были такими:

  • добавил новый ресурс с https и выбрал его в Search Console;
  • в разделе «Сканирование» → «Инструмент проверки файла robots.txt» вставил текст из исправленного файла robots.txt и нажал кнопку «Отправить»;
  • в разделе «Сканирование» → «Файлы Sitemap» добавил файл Sitemap;
  • в разделе «Сканирование» → «Просмотреть как Googlebot» отправил запрос на индексирование главной страницы, запрос на индексирование страницы «Карта сайта» (с адресами всех страниц и записей) приняли только на следующий день;
  • выбрал старый ресурс с http и в разделе «Сканирование» → «Инструмент проверки файла robots.txt» вставил текст из исправленного файла robots.txt и нажал кнопку «Отправить».

Заметил некоторую странность: в разделе Search Console нового сайта «Сведения о файле Sitemap», после его добавления, появилось предупреждение «Файл Sitemap содержит URL, доступ к которым заблокирован в файле robots.txt» и указано количество всех URL из файла Sitemap. Возможно, сначала так и должно быть, так как никакие изменения, кроме смены HTTP на HTTPS в параметрах директив Host и Sitemap, в robots.txt не производились.

Перенаправление трафика с http на https

Для перенаправления трафика с http на https на сайтах под управлением WordPress устанавливаем бесплатный плагин WP Force SSL и активируем его, настроек никаких не требуется (достаточно наличия действующего SSL-сертификата и добавленного «https» в параметры адреса WordPress (URL) и адрес сайта (URL) в разделе админ-панели «Настройки» → «Общие»).

Мои эксперименты с добавлением различных кодов в .htaccess для перенаправления трафика с http на https на сайтах под управлением WordPress ничего не дали. Главная страница перенаправляется, всё остальное - нет.

Для остальных сайтов (не на WordPress) Евробайт рекомендует следующий код добавить в .htaccess:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-proto} !^https$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Яндекс в блоге Платона рекомендует устанавливать редирект с http на https после окончания переезда по директиве Host и склейки зеркал (эту рекомендацию смотрите в комментариях к записи «Деликатный переезд на https или о чем еще стоит знать»).

Продление SSL-сертификата

Сертификат, полученный по инструкции «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?», имеет срок действия 3 месяца (дата окончания указана для каждого сертификата на странице «SSL сертификаты» хостинга Евробайт), поэтому появляется необходимость, как минимум 4 раза в год, сертификат обновлять. В вышеназванной инструкции не хватает одной строки, без которой обновить сертификат или сгенерировать новый не получится. Вот список действий (в общем-то, все то же самое, как и при генерации первого SSL-сертификата, только не создаем директорию ~/private, так как она уже существует):

Логинимся по SSH в свой аккаунт

Переходим в директорию ~/private:

cd ~/private/

Скачиваем скрипт letsencrypt_eb.sh:

wget http://soft.eurodir.ru/letsencrypt_eb.sh

Запускаем его, вместо domain.com указав свой домен:

sh letsencrypt_eb.sh domain.com

Далее создаем новый сертификат в соответствии с инструкцией «Как сгенерировать сертификат Let’s Encrypt на шаред-хостинге?», вставив текст из вновь сгенерированных файлов privkey.pem, cert.pem и chain.pem в поля "Приватный ключ", "Сертификат" и "Цепочка сертификатов".

Создав новый сертификат переходим на вкладку «WWW домены», выделяем домен и нажимаем кнопку «Изменить». В открывшемся окне «Параметры WWW домена» выбираем только что созданный сертификат вместо устаревшего.

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