Вчера решил, что хватит это терпеть и пора перевести свой сайт с http на https (т.е. подключить SSL сертификат и настроить переадресацию). По случаю решил описать весь процесс, как я его делаю. Честно говоря преследую этим переводом сайта еще одну цель — когда меня в очередной раз попросят помочь переехать на https, я просто дам ссылку на подробное руководство.

HTTP, HTTP/2, HTTPS, SSL — о чем речь?

Hypertext Transfer Protocol (HTTP) — это основном протокол связи, который используется на любом сайте для установки соединения.

HTTP/2 — более современный протокол, в котором добавлены увеличивающие производительность и безопасность.

HTTPS — расширение протокола HTTP, которое поддерживает шифрование.

Secure Sockets Layer (SSL) — криптографический протокол для безопасной связи.

Переход с http на https — зачем мне это?

Я бы выделил 4 причины:

  1. Забота о безопасности данных: сейчас по этой теме сходят все с ума (раньше все клали с пробором, но теперь…). Для сайтов работающих с деньгами и онлайн оплатой использование https протокола — острая необходимость, т.к. шифруются все данные (защита от утечки). Для простых информационных ресурсов не особо критично, но купить и установить SSL-сертификат и перейти на https не трудно и не долго.
  2. Это фактор ранжирования: и Яндекс и Google открыто об этом говорили. Если раньше только Гугл заставлял переводить сайты на https протокол, то сейчас за это взялось зеркало Рунета и с 24 января 2019 года в вебмастере уже многие увидели предупреждение:
    Предупреждение в Яндекс Вебмастере

    Предупреждение в Яндекс Вебмастере об отсутствии https-протокола на сайте

    Т.е. это благотворно скажется на ваших позициях и трафике с поисковых систем (на самом деле нет, чаще вообще никак не скажется 🙂 )

  3. Больше доверия со стороны пользователей. Когда посетитель видит в браузере метку:
    Не защищено в браузере

    Меня это не пугает и я все равно юзаю сервис 🙂

    Это может его отпугнуть/насторожить, особенно если это человек не сильно понимающий сути происходящего.

  4. Ради HTTP/2 и большей скорости, которая так же является фактором ранжирования. В среднем прирост по скорости достигает 20-30% практически за 20-30 минут работы.

Ну а теперь перейдем к пошаговому плану по переходу с http на защищенный протокол https.

Шаг 1: Покупка и установка SSL сертификата

Прежде чем приобретать SSL нам нужно определиться с его типом и нашими потребностями, чтобы не переплачивать.

Типы ssl сертификатов и какой выбрать?

Все сертификаты выдаются для 1 домена (все они способны защищать и шифровать ваши данные):

  • С проверкой домена (Domain Validation): отлично подойдет для блогов, сайтов-визиток, интернет-магазинов и любых сайтов, для которых важно само наличие SSL сертификата. Стоит дешево, выдается быстро., замок показывается в браузере.
  • С проверкой компании (Organization Validation): вариант для тех, кому важно большее доверие, т.к. центр сертификации проверяет принадлежность компании к домену. Нужно крупным компаниям и магазинам. Делается за 3 дня.
  • С расширенной проверкой (Extended Validation): максимальное доверие к компании, т.к. выдается только юридическим лицам и центр сертификации проверяет больше данных. Делается за 7-10 дней, стоит дорого, но вы получаете в браузере вывод вашей компании:

    Пример отображения в браузере EV сертификата

    Пример отображения в браузере EV сертификата

Если у вашего сайта много поддоменов и вы хотите их перевести на https — стоит обратить внимание на сертификаты с пометкой Wildcard (количество поддоменов неограниченно).

Активация SSL сертификата для домена

После того, как вы решили какой тип SSL сертификата вам нужен, купили его (свои я покупал на gogetssl.com, а для блога взял бесплатный Let’s Encrypt) и не забыли сохранить все ключи, которые вам были выданы — самое время привязать все к вашему домену. Всё делается у продавца сертификатов в панели управления.

После активации домена он должен пройти валидацию:

Валидация домена пройдена

Валидация домена пройдена, ваш SSL сертификат привязан

Все, теперь можно переходить к следующему шагу.

Бесплатный SSL сертификат от Let’s Encrypt

Let’s Ecnrypt — это некоммерческий центр сертификации. Вы можете без проблем взять их бесплатный SSL сертификат, если вам важно само наличие https протокола.

Яндекс и Google (а также браузеры) нормально относятся к нему, т.е. никаких трудностей у вас не будет.

У хостеров бесплатный сертификат подключается за 1 минуту

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

Установка SSL на примере FastVPS

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

Просто вставить в поля свои ключи от центра сертификации

Очень надеюсь, что вы не потеряли ключи (которые выдавались после покупки сертифката SSL), т.к. их нельзя восстановить!

Шаг 2: Подготовка сайта к переезду на https

Многих сложностей в переносе может не быть вообще, если изначально за сайтом следили и делали все чисто и без костылей.

Бэкап

Любое вмешательство в жизнь сайта (если это не простые действия с контентом или вы не самоуверенный программист) начинается с бэкапа сайта, т.к. в случае появления проблем — вы быстро восстанавливаете данные и программист уходит все делать на своем сервере/хостинге.

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

Когда на сайте абсолютные внутренние ссылки вида http://romanus.ru/page-name — это может быть проблемой, т.к. их нужно:

  1. Либо заменить на относительные ссылки вида /page-name;
  2. Либо в абсолютных ссылках заменить протокол на https.

Я бы выбирал 1 вариант, т.к. он более гибкий и пригодится не только в решении текущей задачи. Однако и там есть свои минусы, но это не тема данной статьи.

Уверен, на любом сайте вы найдете волшебную таблетку (пример замены домена с протоколом в статьях) для WordPress:

Пример замены домена через SQL-запрос

Пример замены домена через SQL-запрос: кто-то его проверял?

Почему люди везде это пишут — непонятно, видимо никто не проверял работоспособность т.к. этот вариант просто не работает. SQL запрос не может заменить домен в ячейке, содержащей целый текст, т.к. это просто замена в лоб (как в Excel). Т.е. вы не можете заменить ячейку, если она не равняется вашему тексту (читай, ячейка = текст и ничего более).

Но у нас же в ячейках текст статей в html формате.

Даю 2 рабочих вариант по массовой замене http на https на сайте:

  1. Для понимающих (хотя им не нужно объяснять). Идем в PhpMyAdmin, экспортируем нашу базу данных (или конкретную таблицу, в которой нужно сделать изменения). Далее открываем редактором типа Sublime или Notepad++ и через замену все меняем. Далее импортируем исправленный вариант обратно в нашу базу данных.
  2. Чтобы не накосячить. Во многих CMS есть плагины, которые с помощью регулярок могут делать замены (да и без них). Например, для WordPress есть хороший плагин Search Regex — который быстро и без проблем поможет сделать замену ссылок в тех местах, в которых это нужно.
Пример работы плагина Search Regex

Пример работы плагина Search Regex для WordPress

Все пути к файлам и изображениям также должны быть изменены.

Адрес сайта

В CMS нужно изменить адрес вашего сайта на корректный, в WordPress это делается так:

Замена домена в админке WordPress

Замена домена в админке WordPress

Внешние скрипты

Все внешние скрипты должны подключаться строго через https, т.к. в противном случае у вас будет смешанный протокол.
Чтобы убедиться — смотрите страницы через режим исходного кода и проходитесь поиском или любой краулер аля Screaming Frog, Netpeak и т.д.

Robots.txt и Sitemap.xml

В robots.txt чаще всего не нужно никаких изменений вносить (раньше нужно было добавить директиву для Яндекса: host: https://romanus.ru — но теперь это уже не нужно), кроме замены пути для sitemap.xml.

В самой карте сайта нужно изменить все ссылки. Если она у вас формируется автоматически + все ссылки в базе данных вы изменили — чаще всего никаких доработок не понадобится. Но лучше перепроверить:

В sitemap.xml не должно быть ссылок на незащищенный протокол

В sitemap.xml не должно быть ссылок на незащищенный протокол

P.S. Многие рекомендуют делать исключения в .htaccess, чтобы robots.txt открывался по 2 протоколам (по http и по https). Я не делаю этого — проблем не замечал, но держу вас в курсе.

Шаг 3: Оповещаем поисковые системы о переходе на https

После покупки и установки SSL-сертификата на подготовленный сайт мы можем оповестить о наших действиях поисковые системы Яндекс и Google в их кабинетах.

Переход в Яндекс.Вебмастер

  1. Добавляем версию с https в панель вебмастера;
  2. На старом зеркале с http заходим в переезд сайта и ставим галочку;
  3. Залить новую карту сайта;
  4. Не забыть поставить регион
Меняем зеркало в Яндекс Вебмастере

Меняем зеркало в Яндекс Вебмастере

По сути в Яндексе переезд на https осуществляется 1 галочкой + перенести свежие данные.

Переход в Google Search Console

Самое страшное, что может произойти во время переезда сайта на https в Гугл — забыть перенести Disavow файл, потому краткий чек-лист:

  1. Добавить новое зеркало с https;
  2. Если у вас были отклонены ссылки через Disavow Links — нужно обязательно обновить данные;
  3. Добавить карту сайта;

Шаг 4: Настройка 301-редиректа с http на https

Здесь все сложно и просто одновременно. Подробная статья о 301 редиректах с примерами, рекомендую изучить.

Скорее всего вам подойдет один из вариантов:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

или

RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

В коде не забываем заменить site.ru на ваш сайт, а вставлять это нужно в файл .htaccess (лежит в корне вашего сайта на хостинге).

Если варианты не подошли — дергаем программиста с просьбой “склеить 301 редиректом все страницы на http со страницами на https” соответственно.

Шаг 5: Ожидание переиндексации сайта

Если вы нигде не накосячили то склейка происходит довольно быстро: 1-2 недели в Google и 2-4 недели в Яндексе.

Все нормально:

  • Если у вас были скрипты репостов — они будут показывать 0, т.к. http и https это 2 разные версии сайта;
  • Сайт временно может падать по трафику и позициям в момент склейки. После всей процедуры с большей вероятностью все восстановится;
  • Внешние ссылки будут переклеены в среднем от 4 недель до пары месяцев;

Вроде все страхи описал.

Поздравляю, теперь у вас рабочий сайт на https, самое время заняться проверкой сертификата и сделать это можно на сервисе https://www.ssllabs.com/ssltest/ (или аналогах):

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

Проверка корректности установки и работоспособности SSL сертификата на веб-сайте

13 популярных ошибок при переходе сайта на https

Пишу самые популярные моменты, которые знаю из своего опыта или опыта коллег:

  1. Сделать 302 редирект вместо 301 для склейки версий http с https;
  2. Сделать редирект всех внутренних страниц сайта на главную;
  3. Допустить цикличные редиректы страниц;
  4. Забыл, что твой сайт без www, но склеить с https://www.site.ru;
  5. Забыл прописать новый путь для sitemap.xml;
  6. Пропустил этап с заменой абсолютных внутренних ссылок;
  7. Не изменил урлы в скриптах и медиа-контенте;
  8. В карте сайта указаны урлы на версию с http;
  9. Описался при наборе домена при получении сертификата и он выдан не на нужный сайт;
  10. Может сломаться 1С, если забыли обновить данные;
  11. Сайт интегрирован с различными API и вы забыли изменить адреса;
  12. Косяки с rel=”canonical” на старые страницы;
  13. Не очистил кэш и начал сам себе выдумывать проблемы.

А с какими косяками вы сталкивались?

Ответы на несколько вопросов

Напоследок несколько популярных вопросов, которые могут всплыть:

Почему сам тянул с переездом на https?
Могу ли я потерять посещаемость?
После перехода на https упали позиции, что делать?
Я хочу ЧПУ и SSL — в какой последовательности делать
Автор статьи
Роман Вердыш (Romanus)
SEO-Expert, стаж более 10 лет
Написано статей
43