Переезд сайта на HTTPS — теперь мы ещё безопасней

переход с HTTP на HTTPS

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

В первую очередь хочется поблагодарить авторов сайта БаблоФил, с которого я взял основную массу информации по переводу собственного сайта на протокол https. Кому интересно вот ссылка на статью источник. Однако в моём случае пришлось слегка отступить от предложенной инструкции, так как у меня был хостинг в другом месте. И кое-какие другие нюансы и особенности.

Поэтому давайте расскажу об исходных данных моего ресурса еще один великолепный шаг

  • Сайт работает на движке WordPress
  • Хостингом служат один из самых популярных хостингов России reg.ru
  • SSL сертификат я решил использовать бесплатный от let’s encrypt, который предлагается прямо в панели управления сайтом
  • На моём сайте используется минимум плагинов: в основном это текст из базы и пара модификаций исходного кода темы

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

Почему я только сейчас решил перевести сайт на https

Поисковые системы уже несколько лет настаивают на том, что пользователи сайта должны безопасно получать свои данные. А это можно обеспечить только используя шифрование и работу по безопасному протоколу https. Однако:

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

Я даже был готов заплатить за процесс перевода сторонним людям, но так и не нашел специалистов, которым можно доверять этот вопрос и свой сайт. Побоялся я раздавать пароли от админки.

Вынудило же меня к переводу:

  • в первую очередь появление в браузере мобильного телефона предупреждений о небезопасном содержимом при переходе на мой сайт
  • особенно неприятно было наблюдать предупреждение при переходе из социальных сетей, так как сайт вообще не открывался во встроенном браузере chrome. Браузер говорил, что сайт не безопасен. Точка.
  • кроме того, уже примерно полгода  я наблюдаю, как мой сайт нагло используется мобильными операторами (особенно Теле 2), для размещения собственной рекламы. Без зазрения совести они подменяли мои рекламные блоки и вставляли свои собственные. Прямо в текст статей.
  • Короновирусная инфекция сильно повлияла на трафик, так как путешествия практически прекратились, и большая часть читателей ушла с сайта, и я решил, что хуже уже не будет, а значит пора заняться переходом
  • я по прежнему не намерен ничего продавать, но всё же считаю, что из уважения к читателям, стоит обезопасить свой ресурс, от подмены злоумышленниками

Поэтому самое время перейти к простому плану перевода сайта с HTTP на HTTPS

Перевод сайта с HTTP на HTTPS — пошаговая инструкция

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

Самым первым делом нужно сделать бэкап базы данных и самого сайта. В большинстве случаев это делается достаточно просто, методами вашего хостинг-провайдера. Например у regru ежедневно, два раза в день, происходит автоматическое копирование бэкапов сайта. Так что, если вы где-то накосячите, то всегда сможете откатиться к актуальной версии без потерь работоспособности.

Я попробовал на всякий случай сделать бэкап своей базы, тут всё очень просто:

  • Переходим в панель управления сайтом (в моём случае это CPanel)
  • Далее в управление базами данных phpMyAdmin
  • Находим нужную базу (если у вас их несколько)
  • Нажимаем кнопку Экспорт. Я выбрал Экспорт в sql формате — возможно вам пригодится в дальнейшем

переход с HTTP на HTTPS

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

  1. Файл бекапа в моем случае составлял более 100 МБ, при том, что разрешенный размер на импорт составляет 50 МБ. Решил очень просто — заархивировал файл. После чего размер стал вполне пригодным.
  2. Не очень понятно, как расставлять галочки при импорт файла бекапа — я оставил всё по умолчанию.
  3. После восстановления из архива сайт chfpe не заработал, так как я забыл добавить пользователя в базу. Делается это через CPanel во вкладке базы данных MySQL

Впрочем, я понадеялся на бекапирование со стороны хостинга и продолжил процедуру переведа сайт.

Первый этап — подготовка базы переезду

Особенностью вордпресса является то, что все ссылки как на статьи, так и на картинки размещаются прямо в тексте таблицы, причём ссылки не относительные, а абсолютные, вплоть до указания протокола. Соответственно если у вас изначально сайт был на обычном протоколе http, то и все ссылки будут с указанием именно этого протокола, что при подключении сертификата даст ошибку «смешанный контент» и не полную безопасность содержимого. Поэтому первым этапом считаю важным сделать возможным выбор протокола по средствам браузера. Для этого потребуется выполнить несколько запросов в вашем PHP my admin или поизвращаться с бекапом.

Вариант 1: запросы к базе

Для этого:

  • возвращаемся в phpMyAdmin
  • переходим в нужную базу
  • открываем вкладку SQL и вставляете запросы
  • Для выполнения нужно нажать кнопку «вперед» или «ок»

переход с HTTP на HTTPS

На самом деле для большинства сайтов достаточно выполнить один-единственный запрос:

update wp_posts set post_content = REPLACE(post_content, ‘http://’, ‘//’);

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

В моем случае для обновления всех ссылок на сайте потребовался и второй запрос, так как я активно использую категории и подписи к ним, где тоже встречаются и ссылки и картинки:

update wp_term_taxonomy set description = REPLACE(description, ‘http://’, ‘//’);

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

Вариант 2 — предложенный в качестве альтернативы

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

  • у вас уже есть бекап вашей базы, сделайте его копию у себя на диске
  • откройте получившийся файл в любом текстовом редакторе, например Notepad++ или нечто подобное
  • нажимаем ctrl+f (найти) и переходим на вкладку найти и заменить
  • в поле найти ставим http:// в поле заменить https://
  • нажимаем enter и сохраняем получившийся файл
  • чуть позже (уже подключив к сайту сертификат SSL) можно будет залить этот бекап на сайт

Лично мне больше нравится вариант 1, так как с запросами мне привычней работать. Кроме того базу можно подготовить заранее, потратив пару десятков минут свободного времени. А к остальным этапам переходить уже позже. Так как работоспособность сайта не нарушится.

Второй этап выбор и покупка SSL сертификата

Для большинства блогов и ресурсов вроде моего достаточно будет воспользоваться бесплатным сертификатом от компании let’s encrypt. Проект мой некоммерческий, поэтому подтверждение юридического адреса не требуется — важно просто начать шифровать данные.

Если же ваш проект носит коммерческий характер, у вас есть юридическая фирма, и вообще сайт используется для работы, то скорее всего у вас есть специалисты, которые итак помогут вам переехать нf безопасный протокол https. При этом бесплатным сертификатом уже не отделаться, так он сильно подорвет доверие к жадной фирме, сэкономившей несколько тысяч рублей. Впрочем есть разные уровни сертификатов — например дорогие, именные, как у крупных компаний. Тогда рядом с замочком в браузере будет писаться название компании — это красиво и добавляет вам веса. Но вернемся к блогам.

На моем хостинге подключение ssl сертификат от let’s encrypt занимает буквально пару минут. Всё что вам нужно сделать это:

  • перейти в CPanel
  • там перейти в безопасность — «Бесплатный SSL от LE»
  • заказать выпуск сертификата для сайта и всех его алиасов.

переход с HTTP на HTTPS

Как только это произойдет, занимает это обычно 5 минут вы уже можете попробовать перейти на свой сайт по протоколу https. Вбив его в адресной строке. Скорее всего заветного замочка ещё не появится, но перейти вы уже должны. Плюс этого сертификата то, что он автоматом будет обновляться и перевыпускается у вас каждые три месяца. А теперь переходим к решению проблем и безопасностью, не дающим показать замочек слева от адресной строки.

Этап 3 убираем смешанный контент

Скорее всего на вашей странице всё ещё находятся ссылки с адресом «http» вместо безопасного протокола «https». Это легко проверить в любом браузере вызвав «исходный код страницы» и поиском найдя http. У меня таких мест оказалось несколько:

  • потребовалось через редактор тем поменять ссылки в заголовке в футере сайта (header.php, footer.php), там я их когда-то ставил руками, возможно вам не потребуется вносить такие изменения
  • изменить ссылки в виджетах, то есть в тех местах, куда я залез в своё время руками
  • в большинстве случаев потребуется всего лишь зайти в настройки вашего сайта и там поменять адрес с http на https. После этого большая часть ссылок автомтически перейдет на безопасный протокол
  • можно предположить, что кому-то может помешать кэш различных ускоряющих работу плагинов — просто сбросьте его во время перехода
  • любой самописный модуль, где адрес прописан не относительный, тоже может стать источником проблемы — но всё решаемо.

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

переход с HTTP на HTTPS

 

Этап 4 настройка редиректа с http на https

В какой-то мере это позволит сохранить внешние ссылки на ваш сайт, а также рейтинг страниц в поисковых системах. Но об этом ещё буду говорить дальше. Настройка редиректа задача творческая — имеется несколько вариантов её решения. Мне наиболее удобным показался способ через изменение файла .htaccess. Для этого:

  • Подключаемся к своему ресурсу по ssh, например, используя приложение Putty. Хотя лично я, для всяких подобных операций, когда нужно закинуть файл или что-то поправить на сайте предпочитаю ftp клиенты программу WinSCP — простая, удобная, бесплатная. При подключении указываете адрес хостинга, логи и пароль

переход с HTTP на HTTPS

  • В настройках программы выбираете «отображать скрытые файлы»
  • находите на у себя на сервере файл .htaccess
  • вставляете следующие настройки

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

Почему-то мне помогли именно эти директивы из всего многообразия предложенного в сети

Этап 5 настройка файла robots и sitemap

В файле robots.txt необходимо указать основное зеркало вашего сайта, теперь оно будет начинаться с https. Сам файл расположен в корне сайта, куда можно зайти как по , так и по FTP. Я снова выбрал программу winSCP. Заодно проверьте, что в файле роботс правильно указана ссылка на файл карты сайта. Он тоже теперь должен начинаться с https. В любом случае файл роботс очень любят как гугл, так и яндекс, так что уделите некоторое внимание ему. В файле роботс должны быть следующие директивы (разумеется с указанием вашего сайта):

Host: https://anotherfinestep.org
Sitemap: https://anotherfinestep.org/sitemap.xml

Если вы генерирует карту сайта автоматически, через какой-либо плагин, то скорее всего к этому моменту у вас уже будет лежать свежая карта сайта с указанием безопасного протокола. То есть все ссылки будут начинаться с HTTPS. На всякий случай зайдите и проверьте карту. И принудительно перегенерите её, если протокол в ссылках не поменялся.

Этап 6 — оповестить поисковые системы о переезде с HTTP на HTTPS

Две самые популярные поисковые системы в России это, разумеется, Яндекс и google, поэтому оповещать будем в первую очередь их. Все остальные системы подтянутся автоматически. Да и трафик с остальных пренебрежимо мал. А вот поисковых монстров уведомить надо, чтобы они не подумали, что в сети появился дубль вашего сайта. Ведь в глазах роботов сайты действительно разные, но с одинаковым содержимым. Это можно значительно понизить ваш рейтинг, точнее рейтинг вашего сайта, переехавшего на новый протокол.

Поэтому заранее подготовьтесь и начинаем с Яндекса

так как часто именно он является основным источником поискового трафика для русскоязычных сайтов:

  • заходим по адресу на сайт Яндекс веб-мастера. Если вы там ещё не регистрировались, то очень зря. Сейчас самое время (желательно ещё до переезда)
  • Добавляем версию вашего сайта с новым протоколом. В моем случае я ещё добавил алиас сайта Anystep.ru
  • переходим в раздел настройки индексирование -> переезд сайта. Ставим галочку добавить https после чего появляется сообщение о том что заявка принята и где-то в течение нескольких недель произойдет переиндексирование сайта.

По окончанию процесса (через несколько недель) Вашим основным зеркалом сайт с протоколом https. К нему будут привязаны все ваши уникальные тексты, Яндекс ИКС, а ссылки с поисковых выдач будут вести на него. Тогда же у сайта появится достижение «замочек» — безопасность использования

Оповещение Google о переезде сайта

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

  • вам необходимо зайти в google search panel.Опять же, если ещё не регистрировались, то сделайте это обязательно
  • добавить там ссылки на новый адрес сайта. А я повторюсь, что добавление протокола https, в глазах поисковых систем делает сайт новым.
  • не забудьте добавить также ссылку на https://www название вашего сайта.
  • в каждом из случаев добавьте карту сайта,  и ожидаете когда google переиндексирует ваш ресурс
  • из файла robots.txt он узнает о главном зеркале вашего сайта И постепенно начнет выдавать именно правильное название страниц с протоколом https при поисковых запросах

Заключительный этап

На заключительном этапе достаточно ускорить индексацию. Точнее переиндексацию вашего ресурса:

  • Для этого достаточно заново сделать репосты ваших самых популярных статей в социальных сетях. Социальные сети последнее время используются поисковыми системами очень активно для индексирования страниц.
  • Например можно зайти либо в google аналитику, либо Яндекс Яндекс метрику. Там выбрать самые популярные страницы и в течение нескольких дней снова выложить эти статьи в свои группы, чаты и стены в социальных сетях

Как видите всё оказалось достаточно несложно. Даже я с небольшим багажом знаний в сфере перевода справился буквально за пару часов. О результатах пока рано говорить. Вероятно так совало, что начал появляться трафик на сайт. А может уже сейчас, переходя из поиска по старым статьям, люди перестали пугаться страшной надписи о небезопасном сайте. Ведь теперь я использую защищенный протокол. С момента подключения сертификата прошло три дня и трафик вырос примерно на 20%. Это приятно. Обязательно расскажу об изменениях в трафике после окончательной индексации сайта.

Поделитесь статьей с друзьями


Оставить комментарий

Ваш адрес email не будет опубликован.