В этой статье я хотел бы рассказать как можно без особых заморочек и совершенно бесплатно перейти на безопасный протокол передачи данных HTTPS.
Многие web-мастера уже перешли на HTTPS, а кто ещё этого не сделал, но все-таки желает решить подобный вопрос, добро пожаловать к ознакомлению с материалом.
До недавнего времени я, как и многие другие, искал описания и инструкции по переводу сайта на HTTPS, сомневался, нужно ли это и получится ли у меня. Но, когда за рекордно малый срок я успешно выполнил всю работу по переходу на трёх сайтах, мне захотелось поделиться своим опытом с Вами, моими читателями.
Сейчас мы не будем рассматривать общие вопросы, касающиеся причин перевода, видов сертификатов и источников их приобретения, надеюсь, всё это Вам уже давно известно. Эта тема на сегодняшний день считается «заезженной» и рассмотрена на многих ресурсах, но её актуальность остается на высоком уровне.
Рассмотрим только лишь конкретный пример получения сертификата SSL от Let’s Encrypt в панели управления хостинга. Срок действия сертификата — 3 месяца и продлевается он автоматически. И что самое важное — сертификаты, выдаваемые Let’s Encrypt, абсолютно бесплатные. Такой сертификат сейчас стоит на моем блоге.
Получение сертификата на хостинге
Повторяю, такого рода услугу оказывают многие хостинг-провайдеры. Чтобы получить возможность установки сертификата, посмотрите в настройках своего домена есть ли раздел SSL-сертификат. Если ваш хостинг предоставляет такую услугу, то будем считать, что нам с вами повезло.
Я использую хостинг Джино, поэтому рассмотрим данный процесс, применительно к нему. На моём хостинге это сделать совсем просто, даже элементарно.
В личном кабинете в Управлении доменами пройдите по ссылке SSL-сертификат и получите бесплатный сертификат:
Вся процедура занимает пару минут. Просто, как кусок хозяйственного мыла! Сертификат на вашем сайте уже установлен!
Далее, откройте свой сайт и в адресной строке браузера к названию протокола HTTP допишите буковку S, чтобы получилось HTTPS. Сайт может открыться нормально, а может немножко «кривовато», но не пугайтесь, это можно легко исправить дальнейшими действиями.
О том, что сертификат установлен, соединение защищено и данные передаются в зашифрованном виде можно убедиться посмотрев информацию в адресной строке браузера.
В настоящее время я использую Яндекс. Браузер. В конце адресной строки моего браузера, кликнув на иконку с изображением замочка, можно увидеть следующее:
Как видите замочек закрыт, значит всё нормально. Если же замочек открыт, то это будет означать, что на странице часть данных продолжает грузиться по незащищенному протоколу http. Эту маленькую оплошность мы так же устраним изменением некоторых настроек сайта.
Настройки сайта после установки сертификата
1. Доработка входа в админ-панель.
В WordPress откройте файл wp-config.php и в самом начале вставьте код, который отвечает за вход в админ-панель по протоколу HTTPS:
define('FORCE_SSL_ADMIN, true');
Эту рекомендацию я взял из урока Евгения Попова. Хотя, справедливости ради, хочу сказать, что у меня, например, вход в админку происходил прекрасно и без установки этого кода! Просто добавил к адресу HTTP буковку S.
2. В используемом браузере сделайте изменения в закладках сайта и входе в админку, если сайт на CMS. Я имею в виду замену названия протокола на HTTPS.
3. Вносим изменения в файл robots.txt.
Открываем файл robots.txt и прописываем директиву host с протоколом https. Помимо этого, необходимо заменить все имеющиеся названия протокола HTTP на HTTPS:
User-agent: * ................................. Sitemap: https://wpwm.olerant.ru/sitemap.xml Host: https://wpwm.olerant.ru
Загрузите на хостинг в корневую папку сайта и проверьте файл robots.txt в Google Search Console:
Сделайте анализ файла robots.txt в Яндекс Вебмастере:
4. Если ваш сайт на WordPress, в админ-панели в Настройки → Общие в адресе сайта нужно исправить название протокола с HTTP на HTTPS.
5. Необходимо заменить все ссылки в коде сайта на https или сделать их относительными (это когда вместо названия протокола используются два слэша //, например, //wpwm.olerant.ru). В WordPress с этой задачей прекрасно справится плагин HTTP/HTTPS Remover.
6. Замените названия протоколов на HTTPS во всех адресах в файле sitemap.xml (в случае сайта индивидуальной разработки) и добавьте его в Яндекс и Google. Проверьте валидность карты сайта sitemap.xml в Google и Яндекс. Вебмастере. Так, например, выглядит результат в Яндексе:
7. В Яндекс. Вебмастере в разделе Индексация → Переезд сайта поставьте галку в чекбоксе Добавить HTTPS и сохраните изменения: Как правило, изменения вступают в силу в течение двух недель. Во время переиндексации ТИЦ вашего сайта может обнулиться:
Не стоит волноваться, после он восстановится до прежнего значения.
Следите за изменениями в своем кабинете Яндекс.Вебмастера. Через несколько дней Вас могут попросить добавить сайт уже с новым протоколом:
8. В Google Search Console к имеющимся сайтам добавляем названия всех своих сайтов с HTTPS:
После окончания переиндексации или не дожидаясь её, в случае, если информация о сайтах с HTTP Вас не интересует, эти сайты можно удалить, оставив лишь сайты с протоколом HTTPS.
Далее, переходим в Настройки сайта и выбираем Основной домен.
9. Если потребуется, переустановите счетчики Яндекс. Метрики. Мне это пришлось сделать на сайте индивидуальной разработки, а на сайтах WordPress все «прокатило».
10. Исправьте названия протокола в адресе сайта во всех возможных местах, где выводится информация о сайте, например в футере, на отдельно выводимых страницах с контактами и т.д.
11. Вносим изменения в файл .htaccess.
Для того, чтобы сайт был доступен только лишь по протоколу HTTPS, необходимо сделать 301 редирект с HTTP на HTTPS. После этого, все кто заходит на сайт с протоколом HTTP, будут автоматически перенаправляться на HTTPS.
Вот именно с этим пунктом на сегодняшний день (2.05. 17) «непонятки». Вопрос заключается в том, когда его можно выполнить. Из некоторых источников я понял, что можно сделать редирект на HTTPS сразу же. Сделал! И смотрите, какое сообщение получил в Яндекс. Вебмастере:
А при анализе файла robots.txt в Яндексе получил такой ответ:Получается так, что необходимо, все таки, подождать какое-то время, когда Яндекс сделает переезд сайта на HTTPS и большая часть страниц http-версии будет исключена из поиска, а затем уже делать редирект с HTTP на HTTPS. Для двоих моих сайтов с небольшим количеством страниц (71 и 127) время такого ожидания составило всего три дня! А сайт, где в поиске 315 страниц, соответственно, будет переиндексироваться дольше.
Так как универсального решения, которое подошло бы для всех сайтов нет, поэтому для обеспечения безопасности вашего ресурса, с вопросом получения кода редиректа лучше обратиться в техподдержку вашего хостинга.
При выполнении редиректа у меня, например, безотказно сработал такой код, который мне предоставил мой хостинг Джино:
# редирект на https RewriteEngine On # Если этой строки нет выше RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Можно скопировать и вставить данный код в файл .htaccess, начиная с новой строки. Хочу отметить, что данное изменение сработало у меня корректно как на блогах WordPress, так и на сайте индивидуальной разработки (на стороннем движке).
Теперь пользователь, который зайдет по протоколу HTTP, будет перенаправляться на адрес с HTTPS. Такой редирект позволит не потерять трафик и ускорить склейку зеркал и переиндексацию сайта.
Если Вы не противник использования плагинов, то вопрос редиректа можно решить при помощи модулей этого направления, например, WordPress Force HTTPS или Easy HTTPS (SSL) Redirection. Но, есть маленькая оговорочка — не на всех серверах они работают и могут вставить некорректный код в файл .htaccess! А это, как говорится, не есть «айс».
Не лишним будет добавление кода редиректа на www и без www, в зависимости от того, какой домен вы выбрали основным.
Если ваш домен с www, вставьте этот код:
## редирект с без www на www: RewriteCond %{HTTP_HOST} ^sitename.ru$ [NC] RewriteRule ^(.*)$ https://www.sitename/$1 [R=301,L]
Если же ваш домен без www, вставьте следующий код:
## редирект c www на без www: RewriteCond %{HTTP_HOST} ^www.sitename.ru$ [NC] RewriteRule ^(.*)$ https://sitename.ru/$1 [R=301,L]
P.S. После выполнения вышеизложенных пунктов ваш ресурс будет соответствовать «духу времени», все страницы вашего сайта будут загружаться по безопасному протоколу HTTPS. А главное, что «дешево и сердито!»