В первых числах октября принял решение о переезде сайта на протокол https. Если ранее Google просто рекомендовал использовать https, то теперь в обновленной версии Chrome появился зелёный замок сообщающий о том, что подключение к сайту защищено.

Переезд сайта на https

И значок «i» по клику на который появляется информация о том, что сайт не защищен.

Http и https в браузере

Hoster.by начал предлагать SSL сертификаты. Обоснование применения такое:

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

Exler.ru, Devaka.ru, Blisch.by переехали на HTTPs. В целом переехал и я. Ниже о том, как сделать https для сайта, купить, установить SSL-сертификат, подготовить сайт к переезду,  сделать переадресацию с http на https, проследить за правильностью переезда.

Как сделать https для сайта

В качестве эксперимента установил бесплатный SSL-сертификат на неосновной домен, в целом ничего сложного. SSS-сертификат со сроком действия 3 года обошелся в 14$.

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

Составил план по переезду на https в MindMeister, в процессе план корректировался финальная версия.

Как сделать https для сайта

Мой результат на 23.10.2016 — сайт работает на https, в индексе поисковиков страницы с https, позиции восстановились, слетел до 0 ТИЦ (возможно временно).

Подготовка сайта к переезду

Markevich.by работает на Wordpress, хостингом управляю через Cpanel. Вся приведённая ниже методика работает на Wordpress и CPanel.

Первым делом сделал в Cpanel резервную копию базы данных и копию всей корневой директории. На всякий случай.

hoster-by-cpanel-copy

Поле того как будет изменен протокол на https все ссылки внутри блога окажутся неправильными. Готовлюсь, меняю все ссылки на относительные (относительно протокола).

Были ссылки с http.

Ссылки c http

C помощью нескольких SQL-запросов к базе данных убрал протокол из всех ссылок на сайте.

Генератор SQL-запросов

Краткое описание перечисленных SQL запросов:

  1. Первый запрос обновляет параметры «Адрес WordPress» и «Адрес сайта» в Настройки > Общие (не нужен).
  2. Второй запрос затрагивает содержимое постов — URL картинок и внутренние ссылки.
  3. Третий запрос обновляет метаданные постов (произвольные поля). Там редко можно найти URL сайта, но подстраховаться не помешает.
  4. Четвертый и пятый запросы относятся к комментариям (содержимое комментария и сайт автора).

Итог выполнения SQL-запросов — затронуто более 10 000 строк.

Итог выполнения SQL-запросов

Теперь все ссылки в статьях стали относительными.

Относительные ссылки

Покупка SSL-сертификата

В Беларуси покупать сертификат дорого. Выбрал SSL-сертификат — Comodo PositiveSSL (сравнить с другими можно здесь). Купил в GogetSSL — 14$ на три года.

Покупка SSL-сертификата

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

GogetSSL - первый заказ

На первом шаге необходим CSR.

Comodo Ppozitive SSL

Сгенерировать CSR можно в CPanel, перехожу в Безопасность/SSL/TLS.

Безопасность - SSL - TLS

Создаю закрытый ключ.

Cpanel - закрытый ключ

Для каждого установленного сертификата SSL должен быть сгенерирован новый файл ключа.

Cpanel - закрытый ключ

Новый закрытый ключ создан.

Cpanel - закрытый ключ создан

Дальше возвращаюсь к Gogetssl и CSR. В Cpanel это запрос на подпись сертификата (CSR). Создать, просмотреть или удалить запрос на подпись сертификата SSL.

Запрос на подпись сертификата (CSR)

В итоге будет создан запрос, который можно использовать в Gogetssl.

Запрос на подпись сертификата (CSR) создан

Зашифрованный запрос на подпись надо вставить в форму вместе с верхней и нижней строками:

  1. ——Begin certificate request——
  2.  ——End certificate request——

Конфигурация CSR

После вставки жму — Validate CSR.

Validate CSR

Следующий шаг — прохождение валидации домена, выбираю — email.

Подтверждение домена

Проверяю почту, приходит подтверждение.

Результат проверки домена

В письме код и ссылка на страницу в которой его надо ввести. Ввожу.

Сomplete generation

SSL сертификат теперь активирован.

SSL сертификат активирован

Можно его скачать и начать установку на сайт. SSL сертификат также приходит на почту.

Скачать SSL сертификат

Установка SSL-сертификата

Теперь иду в Cpanel в Сертификаты (CRT) — Создать, просмотреть, отправить или удалить сертификаты SSL.

Установка SSL-сертификата

Выбираю свой сертификат и передаю.

Сохранить SSL-сертификат

Кроме сертификата для домена есть еще 3. Передаю их все. Дали — пускай будут.

SSL-сертификаты на сервере

Перед тем как отсюда уйти, жму изменить сертификат для markevich.by и копирую зашифрованный сертификат (вместе с begin).

Дальше перехожу снова в Cpanel и в этот раз выбираю — Установка и управление SSL для сайта (HTTPS). Управление сайтами с SSL.

Управление узлами SSL

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

Пакет центра сертификации: (CABUNDLE) не трогаю.  Включить SNI для почтовых служб — оставляю включенным. Нажимаю установить сертификат.

Установить SSL сертификат

Жму установить сертификат.

Установить сертификат

Около 15 секунд идет установка. Итоговое сообщение.

Узел SSL установлен успешно

Сертификат установлен и теперь сайт доступен по https. Делаю редирект в http на https.

Переадресация с http на https

Здесь важно сделать так, чтобы каждая страница на http переадрсовывала на такую же страницу с https. Но при этом robots.txt был доступен как по http так и по https. Добавляю несколько строчек в htaccess.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Меняю в WordPress протокол на https.

Переадресация с http на https

Устранение ошибок

Есть ряд ошибок которые не дают появиться зеленому замку. Chrome помогает найти причину.

Устранение ошибок при переезде на https

Исправляю ошибки.

Устранение ошибок при переезде на https

SSL-сертификат установлен. Сайт доступен только https. Меняю относительные внутренние ссылки на ссылки с https.

Индексирование в Яндекс и Google сайта с https

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

Индексирование в Google сайта с httpsИндексирование в Яндекс сайта с https

Жду пока Яндекс склеит сайты.

Яндекс - склейка сайта

После чего отключаю игнорирование редиректа для robots.txt удаляя две строки в htaccess

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]

В процессе позиции сайта в какой-то момент провалились, но не надолго.

Провал в позициях сайта https

Всё. Осталось дождаться пока восстановиться ТИЦ Яндекса и тогда переезд сайта на https можно считать удачно завершённым.