Перевод сайта на https

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

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

Данная инструкция была многократно опробована на сайтах разного размера, включая новостные порталы с сотнями тысяч страниц и суточной посещаемостью в десятки и сотни тысяч человек.

Выбор сертификата

Если у сайта отсутствует SSL-сертификат (требуется для работы сайта по HTTPS-протоколу), следует прибрести его в соответствии со следующими рекомендациями:

  1. Сертификат необходимо оформить на главное зеркало сайта (с www. или без www.), так как действие самых простых и дешевых сертификатов распространяется только на конкретное зеркало. При заходе на другое зеркало пользователи будут получать предупреждение о недоверенном соединении.

  2. Если на сайте много поддоменов (например, региональных вида spb.site.ru), то выгодно приобрести сертификат типа WildCard (распространяется на основной домен и все его поддомены), чем покупать для каждого поддомена отдельный сертификат.
  3. Для проектов с большим количеством доменов (например, у международной компании может быть отдельный сайт на отдельном домене под каждую страну) подойдут сертификаты типа SAN (Subject Alternative Names) или Multi-Domain.
  4. Для кириллических доменов требуется сертификат с поддержкой IDN (Internationalized Domain Names).
  5. При оформлении сертификата на юридическое лицо можно получить зеленый значок с названием компании в адресной строке многих браузеров, что повышает уровень доверия к сайту:
     1
    1
    Для получения такого значка необходимо оформить Сертификат Расширенной Проверки (EV – extended validation). Однако такие сертификаты стоят дороже, а их оформление занимает больше времени.
  6. Оптимальным вариантом для компаний является сертификат OV (Проверка организации – organization validation). При этом центр сертификации проверит существование организации и ее права на домен.

Подготовка сайта к переходу на HTTPS

  1. Убедитесь, что внутренние ссылки на сайте заданы в относительном формате вне зависимости от домена или протокола (то есть ссылки должны быть вида /page/ или //site.ru/page/). Особенно это важно для AMP-версий страниц.
  2. Проверьте загрузку собственных CSS-, JS-файлов, медиа-контента (изображений, видео и т.д.). Все файлы должны загружаться по относительным адресам (/image/image1.jpg или //site.ru/image/image1.jpg).
  3. Исправьте подключение внешних ресурсов. Сторонние скрипты, шрифты, стили, изображения необходимо загружать либо сразу по HTTPS (например, как код Яндекс.Метрики https://mc.yandex.ru/metrika/watch.js) либо по относительным адресам, независящим от протокола (например, как код Google Analytics //www.google-analytics.com/analytics.js). Если данные файлы недоступны по HTTPS, то стоит отказаться от их использования.
  4. Создайте HTTPS-версию карты сайта (по HTTPS должны быть доступны и сами XML-файлы, и ссылки на все страницы в них).

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

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

Технические настройки сайта

*Использование инструкции Host в файле Robots.txt для Яндекса в настоящее время не требуется (https://yandex.ru/blog/webmaster/301-y-redirekt-polnostyu-zamenil-direktivu-host).


  1. Проверьте доступность сайта по обоим протоколам (HTTP и HTTPS). Отдельно проверьте работу систем статистики (Яндекс.Метрика, Google Analytics и т.д.).
  2. Добавьте HTTPS-версию сайта в сервисы поисковых систем (Яндекс.Вебмастер и Google Search Console), подтвердите права на нее.
  3. Перенесите настройки HTTP-версии сайта в сервисах поисковых систем в HTTPS-версию:
    • Региональность (для Яндекса) и Таргетинг по странам и языкам (для Google);
    • Файлы Sitemap (в HTTPS-версию необходимо добавить ссылки на HTTPS-адреса XML-файлов);
    • Турбо-страницы (для Яндекса, если используются RSS-файлы для Турбо);
    • Параметры URL (для Google, если настроены вручную);
    • Список ссылок в Disawov Links Tool (для Google, если какие-то ссылки были отклонены);
    • Скорость обхода (для Яндекса, если указана вручную);
    • Важные страницы и Избранные запросы (для Яндекса, если добавлены).
  4. Замените в сервисах Яндекс.Справочник и Google Мой Бизнес адрес сайта на вариант с HTTPS (если сайт коммерческий и адреса указаны).

  5. Если на сайте настроено указание канонических страниц с помощью атрибутов rel=»canonical» тега <link>, то необходимо изменить в данных атрибутах адреса страницы на HTTPS-версии. Если rel=»canonical» отсутствуют, то изменение протокола на HTTPS – подходящее время для их внедрения.
  6. Настройте прямые редиректы с кодом 301 со всех HTTP-страниц сайта на соответствующие им HTTPS-страницы сайта. Избегайте построения цепочек редиректов, когда между исходной HTTP-страницей и конечной HTTPS-страницей существуют промежуточные перенаправления (такое возможно, например, при склейке зеркал с www и без www, дубликатов со / и без / и т.д.).
  7. Установите протокол HTTPS в инструменте «Переезд сайта» раздела «Настройка индексирования» в сервисе «Яндекс.Вебмастер» (https://webmaster.yandex.ru/) и сохраните изменения:

    3

    Можно столкнуться с ситуацией, что какое-то время данный инструмент не будет позволять это сделать, сообщая, что указанный вами домен с HTTPS не может быть выбран в качестве главного зеркала – роботу надо убедиться в том, что HTTPS-версия сайта действительно является зеркалом HTTP-версии, и склеить эти версии в группу зеркал.

    В Google Search Console использование инструмента Изменение адреса при изменении протокола на HTTPS (без смены домена) не предусмотрено.

  8. Дождитесь сообщения в сервисе «Яндекс.Вебмастер» о том, что главное зеркало для Яндекса изменено на вариант с HTTPS (это может занять несколько недель).
  9. Проверьте корректность учета поискового трафика на HTTPS-версии (отдельно по Яндексу и Google). Регулярно проверяйте наличие значка «Защищено» в популярных браузерах: он может меняться на «Не защищено» при подключении по HTTP сторонних скриптов и других файлов, добавлении Flash-элементов и иных небезопасных ресурсов, что снижает уровень доверия к сайту.

yula-group.ru

Нужно ли переводить сайт на HTTPS?

Многие задаются вопросами «стоит ли вообще переводить сайт на HTTPS?», «есть ли в этом какая-либо польза? Ответ на все подобные вопросы – Да, польза есть, переводить сайт на HTTPS стоит!

Давайте рассмотрим все плюсы поподробней.

Плюсы перевода сайта на HTTPS

  • HTTPS – это защищенный протокол передачи данных, т.е. все данные, которые передаются между сайтом и пользователем, шифруются. Обычно сайты работают по протоколу HTTP, где трафик не шифруется, и в случае необходимости хакеры могут перехватить Ваши личные данные, которыми Вы обмениваетесь с сайтом. Перевод сайта на HTTPS является только одним способом защиты сайта, в материале «Как защитить сайт на WordPress от взлома?» мы рассмотрели 17 способов защиты, поэтому советую ознакомиться с этим материалом, если Вы используете WordPress;

  • Статус и доверие пользователей – если Вы работаете по протоколу HTTPS, значит, Вы следите за своим сайтом, развиваете его и хотите, чтобы все соединения с сайтом были защищены. Пользователи видят это, например, наблюдают зеленый значок в браузере, а Google Chrome так и пишет, что соединение «Защищено», а для сайтов, которые работают по не защищенному протоколу, — «Не защищено», и это, Вы сами знаете, бросается в глаза. Тем самым пользователи, которые даже не знают, что это значит, на подсознательном уровне доверяют сайтам с зеленым значком и надписью «Защищено». Таким образом, наличие HTTPS повышает статус Вашего сайта;
  • Скриншот 1

  • Повышение позиций в поисковой выдаче – можно подумать, что для обычных блогов, которые не выполняют никакие функции интернет магазина или у них регистрация вообще закрыта, HTTPS не нужен. Однако уже достаточно давно крупные поисковики, в частности Google, объявляли о том, что факт работы сайта по протоколу HTTPS, находится в числе факторов ранжирования сайтов в поисковой выдаче. Именно поэтому обычным блогам и нужно переходить на HTTPS.

Как Вы уже поняли, плюсы в переводе сайта на HTTPS есть, однако в этом процессе есть некие сложности (не минусы), а именно:

  • Приобретение сертификата – нормальные сертификаты стоят денег, но полностью бесплатные сертификаты также можно найти (например, Let’s Encrypt);
  • Установка сертификата на хостинг – если Вы приобрели сертификат не у своего хостера, его необходимо устанавливать самим, хоть это не так уж и сложно, но в первый раз придётся разбираться и повозиться;
  • Настройка сайта на работу с HTTPS – также необходимо выполнить несколько технических настроек сайта, например, настроить переадресацию всех запросов с http на https;
  • Настройка поисковых систем – необходимо уведомить поисковые системы о том, что Вы теперь работаете по новому протоколу, так как в глазах поисковых систем сайт на https – это новый сайт. За счет этого, пока не будет определено главное зеркало, может немного упасть трафик (но это временно).

Первые две сложности, как я выразился, в случае с REG.RU не являются такими уж и «сложностями», так как Вам практически ничего не нужно делать. Необходимо просто заказать сертификат и дождаться, когда он будет готов. Вам его абсолютно бесплатно установят на хостинг (мне даже кажется, что установка происходит в автоматическом режиме).

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


Давайте пошагово, более детально, рассмотрим весь процесс перевода сайта на HTTPS в случае с хостингом REG.RU.

Шаг 1 — Заказ и установка бесплатного SSL сертификата на REG.RU

Заходим в свой личный кабинет на REG.RU, переходим в раздел «Мои услуги», открываем нужную услугу, т.е. хостинг сайта, которой необходимо перевести на HTTPS. Затем в разделе «Услуги» включаем услугу «Бесплатно SSL-сертификат».

Скриншот 2

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

Скриншот 3


После этого Вам придет на почту счет на 0 рублей, Вы просто нажимаете «Оплатить счет» (никакие деньги с Вашего баланса не спишутся).

Теперь Вам осталось просто ждать. Сначала Вам придет письмо о том, что сертификат выпущен, а потом, что он успешно установлен. На это время REG.RU отводит 24 часа, но обычно сертификат будет уже установлен буквально через 1-2 часа (на одном сайте установку я ждал примерно 1 час, на другом около 2,5 часов).

На этом заказ и установка бесплатного SSL сертификата на REG.RU закончена! Как видите, мы практически ничего не делали. Кстати, Ваш сайт к этому моменту уже будет доступен по новому протоколу HTTPS, можете проверить, указав https:// вместо http:// в адресе своего сайта.

Шаг 2 – Перевод сайта на HTTPS

Хоть сайт уже и доступен по https, его все равно еще необходимо настроить для полноценного перевода на HTTPS. Необходимо обязательно выполнить несколько настроек на своем сайте:

  • Сайт по HTTPS доступен, но он также доступен и по HTTP, поэтому нам необходимо сделать перенаправление всех запросов с http на https;
  • В своей CMS (система управления сайтом) нужно включить настройку, отвечающую за работу нового защищённого протокола;
  • Внести изменения в файл robots.txt.

Переадресация всех запросов с http на https

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

    RewriteEngine On   RewriteCond %{SERVER_PORT} !^443$   RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]    

Существуют и другие способы, но этот вариант стоит в числе первых в официальной справке REG.RU.

Также если Вы используете панель управления ISPmanager 5, то Вы можете сделать перенаправления и с помощью нее, т.е. с помощью графического интерфейса, не изменяя тем самым файл htaccess. Более подробно об этом можете посмотреть в официальной справке REG.RU — Редирект с http на https.

Настройка CMS

Системы управления сайтом у всех разные, поэтому мы рассмотрим два примера настройки для двух самых популярных CMS – это WordPress и Joomla.

В случае, если у Вас WordPress.

Заходите в консоль управления сайтом, открываете раздел меню «Настройки -> Общие». В поля «Адрес WordPress (URL)» и «Адрес сайта (URL)» вносите измененный адрес своего сайта, то есть с HTTPS.

Скриншот 4

В случае, если у Вас Joomla.

Заходите в админ-панель сайта, открываете раздел меню «Система -> Общие настройки -> Сервер». В пункте «Включить SSL» выбираете «Весь сайт» и нажимаете «Сохранить» или «Сохранить и закрыть».

Скриншот 5

Основные настройки CMS мы сделали, иногда также требуется в настройках некоторых компонентов или виджетов принудительно указать настройку, например, «Использовать SSL», однако мне этого не требовалось.

Изменение файла robots.txt

Теперь необходимо внести изменения в файл robots.txt, для того чтобы поисковые системы при обращении к Вашему сайту знали, что основным доменом теперь является сайт на HTTPS, а также то, что карта сайта теперь расположена по новому адресу (с HTTPS). Для этого необходимо изменить директивы Host и Sitemap, например

    Host: https://mysite.ru   Sitemap: https://mysite.ru/sitemap.xml    

Шаг 3 – Устранение возможных ошибок на сайте

После того как все настройки выполнены, необходимо все очень тщательно проверить, а именно:

  • Все внутренние ссылки – они должны быть относительными или с использованием протокола HTTPS (включая ссылки на картинки, CSS стили, JavaScript скрипты и так далее). В случае нахождения ссылок с HTTP необходимо исправить их на «относительные» (это лучше всего, так как в этом случае Вы не указываете протокол, а только адрес страницы, например, /page.html, /page/ или //site.ru/page/);
  • Карту сайта – все ссылки в карте сайта также должны быть с указанием протокола HTTPS, если это не так, Вам следует обновить карту сайта;
  • Работоспособность протокола HTTPS – это можно проверить сервисом https://www.sslshopper.com/ssl-checker.html (в результате проверки галочки должны быть все зелёными, никаких сообщений и ошибок быть не должно);
  • Работоспособность всего сайта – рекомендую проверить, все ли компоненты, виджеты у Вас работают в штатном режиме. Чтобы уже на начальном этапе определить и устранить возможные неисправности.

Шаг 4 – Настройка поисковых систем

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

В случае с Яндекс

  • Необходимо зайти в Яндекс Вебмастер и добавить свой сайт с протоколом HTTPS, и подтвердить права на него. В итоге у Вас будет два сайта, один с HTTP, другой HTTPS (спустя время произойдет склейка этих сайтов);
  • Добавить карту сайта для нового сайта, иными словами, открыть сайт (который с HTTPS) и указать для него карту сайта, соответственно с указанием протокола HTTPS – «Индексирование» -> Файлы Sitemap»;
  • Открыть сайт (который с HTTP), перейти в раздел «Индексирование -> Переезд сайта» и отметить галочку «Добавить HTTPS» и нажать сохранить.

Скриншот 6

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

В случае с Google

  • Необходимо зайти в Google Search Console и также добавить свой сайт с протоколом HTTPS и подтвердить права на него – «Добавить ресурс»;
  • Добавить карту сайта для сайта на HTTPS – «Сканирование -> Файлы Sitemap».

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

У меня на этом все, надеюсь, статья была Вам полезна, пока!

info-comp.ru

Если вы решили использовать защищенный протокол на страницах своего сайта, вы молодец. Используя HTTPS-соединение, вы заботитесь о конфиденциальности данных своих пользователей. Быть ответственным владельцем сервиса и стоять горой за безопасный Интернет стало гораздо проще после появления бесплатных SSL-сертификатов, не требующих дополнительной настройки, однако приложить некоторые усилия для перевода сайта с HTTP на HTTPS все же придется.

Полноценная настройка сайта для работы с протоколом HTTPS обычно сводится к замене протокола в прямых ссылках, присутствующих в коде сайта и его базе данных. Это могут быть как внутренние ссылки, указывающие на страницы сайта, так и ссылки, указывающие на внешние ресурсы. На сайте могут быть использованы изображения или скрипты, размещаемые на сторонних сайтах. К примеру, используемая на сайте библиотека jQuery может подгружаться извне, а не находиться в одном из его каталогов, при этом в ссылке на библиотеку будет явным образом указан протокол HTTP.

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

RewriteEngine on  RewriteCond %{HTTP:X-Forwarded-Proto} !https  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]  

После настройки перенаправления перейдем на сайт. Если часть размещаемого на странице контента по-прежнему подгружается по незащищенному протоколу, в браузере рядом с адресной строкой (в примере мы использовали браузер Mozilla Firefox) появится вот такой значок:

Перевод сайта на https

 

при клике на значок отобразится сообщение о незащищенном соединении.

Перевод сайта на https

 

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

Перевод сайта на https

Перевод сайта на https

 

Определив имена файлов или доменов, ссылающихся на сторонние ресурсы по незащищенному протоколу HTTP, найдем их, используя функцию поиска по базе данных или поиска по файлам в файловом менеджере Панели управления, и отредактируем.

Для выявления ссылок, использующих незащищенный протокол, также можно применить  «Инструменты разработчика» в браузере.  Для этого нужно нажать клавишу F12 на клавиатуре и перейти во вкладку «Консоль» открывшегося окна (или в меню «Инструменты» →«Веб-разработка» → «Веб-консоль»), в которой содержится сообщение о загрузке смешанного содержимого на сайте (Mixed Content) с соответствующими указателями.

Перевод сайта на https

 

Пара слов о ссылках:

Адрес ссылки может быть абсолютным или относительным. Адреса абсолютных ссылок обычно содержат имя сайта и начинаются с указания протокола (http:// или https://). Для относительных ссылок точкой отсчета является не имя сайта, а место, где находится страница, на которой нужно разместить ссылку на другую страницу или файл.

абсолютная:      https://example.ru/news/2016/

относительная:   /news/2016/

Похожим образом ссылки могут быть относительными от протокола:

абсолютная:     https://example.ru/news/2016/

относительная:   //example.ru/news/

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

Например:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

рекомендуется заменить на

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

Это решение использовать не удастся, если ресурс, на который мы ссылаемся, не поддерживает работу с протоколом HTTPS. В таком случае мы рекомендуем сохранить контент, подгружаемый со сторонних ресурсов, в одном из каталогов сайта, изменив ссылку на него соответствующим образом. Предположим, на одной из страниц сайта используется изображение с сайта domain.com, не поддерживающего работу с протоколом HTTPS. Вставка изображения на странице вашего сайта осуществляется следующим образом:

<img src="http://domain.com/libraries/photos/background.png">

В таком случае нужно скачать изображение и сохранить его, к примеру, в директорию images/ вашего сайта, а затем заменить заданную через атрибут src=«» ссылку на изображение :

<img src="//images/background.png">

 

Поиск в базе данных

Для поиска абсолютных ссылок в базе данных сайта воспользуемся доступным в Панели управления инструментом PhpMyAdmin («Базы данных» -> «Войти в PhpMyAdmin»).  В PhpMyAdmin выберем базу данных нужного сайта и нажмем на кнопку «Поиск».

Перевод сайта на https

В качестве значения для поиска следует выбрать имя файла или домен, обращение к которому происходит по протоколу HTTP — эти данные, как мы уже рассказали в самом начале статьи, можно получить в списке, представленном во вкладке «Мультимедиа» окна Информации о странице.

 

s-sd.ru

Зачем нужно использовать https и что имеется ввиду под безопасностью?

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

Весь процесс я решил разделить на шаги и выполнять их как раз именно в такой последовательности. Также ниже я дам рекомендации по переходу для популярных cms Joomla и WordPress. У каждого есть свои особенности.

Приобретение сертификата

Для начала необходимо приобрести SSL сертификат, чтобы ваш сайт был доступен по обоим протоколам — http и https.  Давайте сначала внесем некоторые ясности в виды SSL сертификатов.

Виды сертификатов

Простые сертификаты

Такие сертификаты выдаются на один или несколько доменов и подходят как физическим, так и юридическим лицам. Как правило, на выпуск таких сертификатов не уходит много времени, может быть выпущен даже в течении 5 минут. Чтобы получить такой сертификат необходима только проверка принадлежности к домену того, кто его запрашивает.

Wildcard SSL

Wildcard SSL — прекрасно подойдет сайтам с наличием поддоменов. В данном случае достаточно выпустить один сертификат, который будет работать на всех поддоменах и позволит сэкономить деньги на покупку отдельных сертификатов.

Мультидоменные SSL сертификаты

Мультидоменный SSL сертификат — сертификат, который может поддерживать сразу несколько доменов. Также, как и Wildcard позволит сэкономить денежку. Так что имейте ввиду, если у вашей компании или проекта имеется несколько доменных имен, то выбирайте именно мультидоменный сертификат.

EV (Extended Validation) сертификаты

EV (Extended Validation) — расширенная проверка компании. Данный вид сертификата могут позволить себе купить только крупные компании. Для его получения необходимо предоставить всю подробную информацию о компании — название организации, реквизиты, наличие о государственной регистрации, реальные звонки для утверждения полученных данных и многое другое. Да, получение такого вида сертификата дело хлопотное, но поверьте оно того стоит. Более того, рядом с адресной строкой в браузере будет отображаться название компании. Вот как это выглядит на примере сайта Сбербанка.

Отображение SSL сертификата в Сбербанк

Смотрится круто и повышает доверие потенциального клиента. Поэтому, владельцам крупных компаний рекомендуется выпуск именно EV сертификатов.

Сертификаты с поддержкой IDN

Не все сертификаты поддерживают кириллические домены. Если у вас домен кириллицей в зоне РФ, то вам следует приобрести сертификат с поддержкой IDN.

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

Получение сертификата

Сегодня приобрести сертификат SSL для сайта можно абсолютно бесплатно. Уже давно Google заявил о том, что пора уже переходить всем на безопасный прокол https и что предпочтение в ранжировании будет отдаваться сайтам именно с защищенным соединением. Кстати, это еще одна причина по которой я перешел на https. В общем, в связи с этим всем в свет появился проект под названием Let’s Encrypt. В первую очередь данный проект рассчитан на доступность приобретения SSL сертификата, а также облегчить жизнь рядовым веб-разработчикам с установкой сертификатов (генерация приватных ключей и прочее). И что самое главное — сертификаты, выдаваемые Let’s Encrypt, абсолютно бесплатные. Лично на моем блоге стоит именно такой сертификат.

Я получил сертификат SSL от Let’s Encrypt в панели управления beget.ru. Если вы пользуетесь данным хостингом, то получить его будет проще простого. Заходите в панель управления Бегет, далее переходите в раздел «Домены» и в списке доменов щелкаете по иконке SSL.

Получение SSL сертификата в Бегет

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

Выбор бесплатного сертификата в Бегет

Настройка сайта

Загружаемые ресурсы

Для перевода сайта на HTTPS необходимо выполнить некоторые настройки на сайте, касается это загружаемых ресурсов. Что подразумевается под ресурсами, это — скрипты, стили, картинки, аудио, видео, т.е. все те ресурсы, которые загружаются браузером с вашего сайта через протокол http. Существуют относительные и абсолютные адреса. Чем они отличаются?

Относительный адрес:

/image.jpg

Относительный адрес вне зависимости от протокола:

//sitename.ru/image.jpg

Абсолютный адрес:

http://sitename.ru/image.jpg

В абсолютном адресе указывается доменное имя сайта с протоколом. Так вот, при переходе на https необходимо применять относительные адреса вне зависимости от протокола, т.е. отсекая сам протокол. При таком подходе ресурсы будут загружаться по такому же протоколу, что и ваш и не важно на http он или на https. Единственное условие — если вы загружаете ресурсы с внешних сайтов (например, с CDN), то данные сайты должны быть доступны по https, иначе от них придется отказаться.

Например, загрузка библиотеки jQuery с CDN с поддержкой https будет следующей:

<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>

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

Тег <base />

Обратите внимание, если вы на сайте используете тег <base> с адресом сайта, то обязательно проследите, чтобы адрес был указан с протоколом https. Например, <base href=»https://zaurmag.ru» />. Данный тег не является обязательным, но все же, если в вашей cms он используется, то потрудитесь его исправить в случае чего. Находится он в самом начале секции <head>. Если получится так, что вы все ссылки изменили на относительные вне зависимости от протокола (//sitename.ru), а в теге <base> содержится адрес с http, то все ваши относительные ссылки будут считаться относительными в зависимости от протокола http. В результате в консоле браузера вы получите кучу ошибок, а на сайте поплывет дизайн.

Тег rel=»canonical»

Если у вас на сайте используется тег rel=»canonical», то проследите за тем, чтобы канонический адрес страницы в данном теге был абсолютным с указанием протокола https. Иначе, если будет http он будет работать только во вред.

301 редирект с http на https

Чтобы не потерять трафик нам необходимо сделать так, что когда пользователь заходит на сайт по протоколу http его бы автоматически перекидывало на https. Склейка зеркал и переиндексация сайта в поисковиках дело долгое (Гугл правда быстро реагирует, вот с Яндексом придется ждать), поэтому 301 редирект может это дело ускорить и не дать потерять трафик. Для этого в файл .htaccess нужно добавить всего две строчки:

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

Этих двух строк должно хватить. Если же у вас будут проблемы с редиректом, то можете попробовать альтернативный код.

RewriteEngine On # Если этой строки нет выше  RewriteCond %{HTTP:X-Forwarded-Protocol} !=https  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

А вот еще один код редиректа. Бывало такое у меня, что выше два кода не работали. Помог только этот.

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

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

Еще советую добавить код, который будет перекидывать по 301 редиректу на www или на без www, в зависимости от того, какой домен вы выбрали основным.

## редирект с без www на www:  RewriteCond %{HTTP_HOST} ^sitename.ru$ [NC]  RewriteRule ^(.*)$ https://www.sitename/$1 [R=301,L] ## редирект c www на без www:  RewriteCond %{HTTP_HOST} ^www.sitename.ru$ [NC]  RewriteRule ^(.*)$ https://sitename.ru/$1 [R=301,L]

Файл robots.txt

В robots.txt нам обязательно следует указать главное зеркало с протоколом https. Также указать ссылку на карту сайта так с протоколом https. Вот как я сделал на своем блоге:

Host: https://zaurmag.ru  Sitemap: https://zaurmag.ru/sitemap.xml

Переезд сайта в панели вебмастеров Яндекс и Гугл

После вышеперечисленных действий нам необходимо сообщить поисковикам, что сайт переехал на новый протокол https. Как известно адрес с http и с https это абсолютно два разных адреса в глазах поисковиков.

Яндекс вебмастер

Для переезда сайта в Яндекс заходим в панель Яндекс Вебмастер по адресу https://webmaster.yandex.ru. Выбираем свой сайт и в разделе «Настройка индексирования» вводим свой домен и отмечаем чек-бокс «Добавить HTTPS«, сохраняем.

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

Далее переходим в раздел «Настройка индексирования» -> «Файлы Sitemap» и добавляем адрес карты сайта с протоколом https. Данный адрес, если помните мы указывали и в файле robots.txt.

Добавляем адрес sitemap в панели Яндекс вебмастер

Центр вебмастеров Гугл

С Яндексом разобрались, теперь давайте перейдем к Google. Идем в центр вебмастеров Гугл — https://www.google.com/webmasters и добавляем все версии (зеркала) сайта. Всего их должно быть 4. Например, для моего блога я добавил:

http://zaurmag.ru   https://zaurmag.ru   http://www.zaurmag.ru   https://www.zaurmag.ru

Версии одного сайта в вебмастере гугл

Далее выбираем основное зеркало с https естественно, только с www или без www. Для своего сайта я выбрал без www — https://zaurmag.ru. Открываем сайт и в настройках сайта (кликаем по шестеренке справа) указываем основной домен. Вот на примере моего блога.

Основное зеркало сайта zaurmag.ru в вебмастере гугл

Далее указываем адрес карты сайта. Для этого идем в «Сканирование» -> «Файлы Sitemap» и добавляем адрес карты сайта, щелкнув по красной кнопочке справа. Кстати, пока писал статью обнаружил, что я не добавил карту сайта для основного домена сайта zaurmag.ru.  🙂

Карта сайт в Гугл вебмастер

Ну вот, на этом все. Если вы сделали все правильно, то в браузере рядом с адресной строкой у вас должен появиться зеленый замочек. Хотелось бы отметить, что если хотя бы один ресурс будет загружаться по незащищенному протоколу, то зеленого замочка вы не увидете, будет серый восклицательный знак. Отследить загрузку всех ресурсов вы можете в консоли браузера.

Зеленый замочек https

Также хотелось бы сказать, что процесс переиндексации в Гугл занимает не так много времени, примерно 2 недели хватит, а может и меньше. Вот в Яндекс по сложнее с этим, я и не удивлен. Яндекс всегда был тугой в этом плане. В первое время у вас обнулится ТИЦ, если он у вас был и в первый же апдейт ТИЦа должен будет вернуться. Это я написал, чтобы вы не пугались. Ну а далее в Яндекс Вебмастер вы обнаружите следующую картину…

Сайт zaurmag.ru в вебмастере Яндекс

Прошло довольно приличное время после перехода на https и как видите по скрину еще не все страницы перешли на https. Что сказать, так устроен отечественный поисковик.

Парус слов про Яндекс Метрику. Если у вас был установлен код яндекс метирки, то в панели метирики вам придется добавить сайт заново с протоколом https.

Переход на HTTPS в Joomla

Обновлено — 15.12.2016

В последних версиях Joomla с переходом на https не должно возникнуть проблем. В файл .htaccess не обязательно добавлять директивы редиректов, движок сам перекинет с http на https. Для этого необходимо просто включить опцию в общих настройках Joomla — «Сервер» -> «Включить SSL» -> «Весь сайт».

Переключение на https в глобальных настройках Joomla

Ошибка при переходе на Https в Joomla

Один раз у меня было такое, что мне пришлось немного потрудиться, на одном из клиентских сайтов переход на https прошел не так гладко. Браузер ругался на относительные адреса загружаемых ресурсов, хотя адреса были указаны относительными вне зависимости от протокола. Проблема была в теге <base />. Давайте расскажу по порядку.

Помимо тех настроек сайта, что были указаны выше нам необходимо открыть файл configuration.php и в поле live_site вписать абсолютный адрес с проколом https.

public $live_site = 'https://sitename.ru';

По идее после этой настройки в теге <base /> адрес сайта должен быть указан с протоколом https. Но нет, он был указан с протоколом http, от того и пошли все ошибки. Поискал решение проблемы в интернете, конкретно на форуме joomlaforum.ru и нашел решение. Необходимо было сделать некоторый хак ядра, правда уверяли, что после обновления данные изменения не затрутся. Открываем файл —  /libraries/joomla/document/renderer/html/head.php и заменяем (77 строка)

$buffer .= $tab . '<base href="' . $base . '" />' . $lnEnd;

на

$buffer .= $tab . '<base href="' . Juri::base() . '" />' . $lnEnd;

Пока я эту проблему так и не решил. Не понимаю почему так происходит — версия движка последняя.

После этих действий все пришло в норму. Также в общих настройках Joomla, включил SSL. Ее включение привело к неработоспособности сайта.  Если вдруг вы выбрали опцию «Весь сайт» и сайт перестал работать, то вам необходимо открыть файл configuration.php по Ftp,  найти $force_ssl и установить значение на 0.

public $force_ssl = '0';

После этого сайт заработает.

Переход на HTTPS в WordPress

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

Настройка адреса в настройках WordPress

Также, желательно сделать бэкап сайта на всякий случай. Просто дело в том, что в WordPress все адреса хранятся в базе данных в абсолютном виде. После изменения настройки сайта все адреса должны поменяться и в базе данных. Поэтому на случай, если пойдет что-то не так сделайте бэкап.

На этом и завершу. Всем спасибо за внимание. Не стесняемся, задаем вопросы в комментариях.

zaurmag.ru

Что такое https?

https — это защищенный протокол передачи. От обычного http он отличается шифрованием всех передаваемых данных, что позволяет обезопасить обмен между сайтом и пользователем.

Если вдаваться в техническую часть, то работает он за счет криптографических протоколов SSL и TLS. Данные  протоколы имеют трехуровневую защиту, которая позволяет исключить перехват, перенаправление и изменение данных.

Кому нужен защищенный протокол?

Изначально защищенный протокол создавался для безопасной передачи данных о платежах и конфиденциальной информации. То есть, был необходим Интернет-магазинам, хост-провайдерам, Интернет-банкингу, а также всем тем, кто проводил финансовые операции. Со временем поисковые системы выяснили, что сайты на https обычно более качественные и безопасные для пользователей. Так защищенный протокол стал одним из факторов ранжирования.

Google открыто заявляет, что сайты с https ранжируются выше, чем прочие равные на http. Яндекс утверждает, что относится к данному протоколу нейтрально, однако практика показывает, что ресурсы с https все же выходят в ТОП охотнее.

Сегодня защищенный протокол передачи данных желательно иметь каждому. Совсем недавно появилась бесплатная версия сертификата (SSL Let’s Encrypt), поэтому переход теперь не стоит ни копейки.

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

Прежде чем приобрести у хост-провайдера сертификат, необходимо подготовить сайт. Без этих работ переход может стоить Вам львиной доли органического трафика или работоспособности сайта. В обязательном порядке нужно:

  • Сделать все ссылки внутри сайта относительными;

    Все ссылки на сайте должны быть относительными. Грубо говоря, не иметь конкретного домена и протокола. К примеру: https://dh-agency.ru/regionalnoe-prodvijenie/ — это абсолютная ссылка, а вот /regionalnoe-prodvijenie/ — уже относительная. Внутри сайта обе ссылки будут вести на одну и ту же страницу.

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

  • Исправить ссылки на все внешние скрипты;

    Убедитесь, что все внешние скрипты так же поддерживают https. Если Вы не уверены, возможно прописать ссылки без протокола, как указано на принт-скрине ниже.

    Ссылки для скриптов

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

  • Настроить виджеты, плагины и компоненты;

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

    https для виджитов

    В противном случае, на странице где используется данный виджет (модуль, компонент и т.д.) в адресной строке будет https://, но не будет сообщения о защищенном соединении.

    Защищенное соединение в строке браузера

  • Поменять адрес в настройках Вашей CMS;

    Если вы используете Joomla!, Opencart, WordPress, MODx, Bitrix или другую популярную систему управления, то в настройках всегда есть поле с главным адресом сайта. В WordPress это выглядит следующим образом:

    Адрес сайта в настройках WordPress

Переходим на https

Для начала нужно выбрать и заказать сертификат SSL. Сделать это можно у хост-провайдера. Их существуют несколько видов:

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

    Сертификат SSL lets encrypt

    На данный момент у нас именно такой сертификат.

  • Esential SSL — сертификат подтверждающий только право владения доменом. Выдается очень быстро и стоит дешево. Срок действия 1 год. Можно оформить как на юридическое, так и на физическое лицо.

  • Instant SSL — сертификат подтверждающий право владения доменом, а так же личность владельца (регистрационные данные компании). Срок действия 1 год.

  • SGC SSL-сертификат — схож с предыдущим сертификатом, за одним исключением. Он поддерживает 40-битные расширения. Срок действия 1 год.

  • Обычный Wildcard — Выдается на домен и все его поддомены, поэтому стоит довольно дорого.

  • EV (Extended Validation) сертификат — сертификат с расширенной проверкой. Время регистрации в 2-3 раза дольше обычного. Доступен только юридическим лицам.

  • EV Wildcard и EV SGC — аналогично описанным выше сертификатам, но с расширенной проверкой.

Какой из перечисленных выбрать — зависит от целей и потребностей. Скажем только, что сертификатам с расширенной проверкой, поисковики (как и люди) доверяют больше.

Прописываем редирект в .htaccess

Сразу после того, как сертификат будет выдан и сайт станет доступен по https, необходимо прописать 301 редирект в файле .htaccess. Файл этот можно найти в корневом каталоге Вашего сайта. Некоторые файловые менеджеры по умолчанию не показывают документы начинающиеся с точки, поэтому поройтесь в настройках.

Нужно это для того, чтобы пользователь при переходе на http сразу перенаправлялся на https.

Следующие строки, которые нужно прописать в файле, справедливы практически для всех серверов.

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

Меняем host в robots.txt

Не забудьте поменять Host и ссылку на Sitemap.xml в файле robots.txt.

Смена протокола в robots.txt

Стоит сказать, что если у вас обычное соединение http, то писать его в host не нужно. (пишите просто домен)

Меняем адреса в sitemap.xml

Адреса в карте сайта так же нужно обновить. Это позволит избежать лишних редиректов при обращении робота.

Смена протокола в Sitemap

Добавляем https в Webmaster

В Вебмастере в разделе «Индексирование» есть пункт «Переезд сайта«. Необходимо поставить галочку напротив «Добавить HTTPS«.

Переезд сайта на новый протокол в Вебмастере

После этого, Вы увидите подобное сообщение, которое означает, что Яндекс уведомлен о переезде.

Смена протокола в поиске Яндекса

Добавляем новый Webmaster

Кроме всего перечисленного, что бы получать корректную информацию, нам придется добавить в Вебмастер сайт с https. То есть, по итогам должно получиться 2 сайта. Один с http, другой с https. После обновления сайты будут связаны.

Адрес со старым протоколом можно не удалять, так как в нем будет информация о внешних ссылках именно на http.

Проверяем, все ли верно

Для проверки перейдите на свой сайт и пробегитесь по страницам. В адресной строке браузера у Вас должен появится замочек и протокол https.

Замочек в адресной строке браузера

Если в некоторых разделах нету замочка, но есть https, это означает, что на странице присутствует незащищенная передача данных. Это может быть следствием работы виджета или скрипта.

Перейдите на сайт по ссылке с http. При корректной работе Вы сразу должны  быть перенаправлены на защищенный протокол. (В следствии работы 301 редиректа)

В долгосрочной перспективе сайты в Yandex Webmaster должны быть склеены. В результате Вы увидите следующую картину.

Склейка сайтов с https

Кроме этого, в разделе «Индексация» пункт меню «Переезд сайта» должен смениться на «Расклейка зеркал«.

dh-agency.ru

В переводе этого документа описываются шаги, которые необходимо предпринять для перевода вашего сайта с HTTP на HTTPS. Шаги можно выполнять с любой скоростью – либо всё за день, либо один шаг за месяц. Главное, делать это последовательно.

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

Для кого предназначена эта инструкция?

Администраторы, разработчики и их менеджеры – те, кто обслуживает сайты, в данный момент использующие только HTTP-соединение. При этом они желают мигрировать, или хотя бы поддерживать, HTTPS.

1: Получение и установка сертификатов

Если вы ещё не получили сертификаты – необходимо выбрать поставщика, и купить сертификат. Сейчас есть пара возможностей даже получить сертификаты бесплатно – например, их выдаёт контора RapidSSL. Кроме того, в 2015 году Mozilla обещают сделать бесплатную выдачу сертификатов.

Скопируйте полученные сертификаты на ваши фронтенд-сервера куда-нибудь в /etc/ssl (Linux / Unix) или в приемлемое место для IIS (Windows).

2: Включение HTTPS на сервере

Здесь надо определиться:

— либо использовать хостинг по IP, когда у каждого хоста свой IP
— либо отказаться от поддержки пользователей, которые используют IE на Windows XP или Android с версией менее 2.3

На большинстве сайтов настроен виртуальный хостинг, который работает с доменными именами (name-based) – это экономит IP-адреса и вообще более удобно. Проблема в том, что IE и древний Android не понимают Server Name Indication (SNI), а это критично для работы HTTPS при name-based хостинге.

Когда-нибудь все эти клиенты вымрут. Вы можете отслеживать количество таких клиентов и решить, нужно их поддерживать или нет.

Далее настройте поддержку сертификатов, которые вы получили, в вашем веб-сервере. Конфигурацию сервера можно создать через Mozilla configuration generator или SSLMate.

Если у вас много хостов и поддоменов – кажды из них потребует установки подходящего сертификата. Для поддоменов лучше использовать сертификаты с маской типа *.domain.ru

В идеале, вам необходимо переадресовывать все запросы к HTTP на HTTPS и использовать Strict Transport Security (см. шаги 4 и 5)

После этого проверьте работу сайта с новыми настройками при помощи инструмента Qualys SSL Server Test. Добейтесь того, чтобы сайт заслуживал оценки A или A+.

3: Сделайте все внутренние ссылки относительными

Теперь, когда ваш сайт работает и на HTTP и на HTTPS, вам нужно добиться его работы вне зависимости от протокола. Может возникнуть проблема смешанных протоколов – когда на странице, которую грузят через HTTPS, указаны ресурсы, доступные по HTTP. В этом случае браузер предупредит пользователя, что защита, предоставляемая HTTPS, перестала работать на 100%.

По умолчанию многие браузеры вообще не будут загружать смешанный контент. Если это будут скрипты или стили, страница перестанет работать. К слову, включать в страницу, загруженную по HTTP, контент, доступный через HTTPS, можно без проблем.

Проблема эта решается заменой полных линков на относительные. Вместо такого:

<h1>Welcome To Example.com</h1> <script src="http://example.com/jquery.js"></script> <link rel="stylesheet" href="http://assets.example.com/style.css"/> <img src="http://img.example.com/logo.png"/> <p>Read this nice <a href="http://example.com/2014/12/24/">new post on cats!</a></p> <p>Check out this <a href="http://foo.com/">other cool site.</a></p> 

надо сделать такое:

<h1>Welcome To Example.com</h1> <script src="//example.com/jquery.js"></script> <link rel="stylesheet" href="//assets.example.com/style.css"/> <img src="1450829848287066165294"/> <p>Read this nice <a href="//example.com/2014/12/24/">new post on cats!</a></p> <p>Check out this <a href="http://foo.com/">other cool site.</a></p> 

или такое:

<h1>Welcome To Example.com</h1> <script src="/jquery.js"></script> <link rel="stylesheet" href="//assets.example.com/style.css"/> <img src="1450829848287066165294"/> <p>Read this nice <a href="/2014/12/24/">new post on cats!</a></p> <p>Check out this <a href="http://foo.com/">other cool site.</a></p> 

Все линки должны быть относительными, и чем относительнее, тем лучше. По возможности надо убрать протокол (//example.com) или домен (/jquery.js).

Лучше делать это при помощи скриптов, и не забыть про контент, который может находиться в базах данных, скриптах, стилях, правилах редиректа, тегах link. Проверить сайт на наличие смешанного контента можно скриптом от Bram van Damme.

Естественно, в ссылках на другие сайты протоколы менять не нужно.

Если в вашем сайте используются скрипты и другие ресурсы от третьих лиц, например CDN, jquery.com, у вас есть 2 варианта:

— также использовать URL без указания протокола
— скопируйте эти ресурсы к себе на сервер. Это в любом случае надёжнее

4: Переадресация с HTTP на HTTPS

Установите тег

<link rel="canonical" href="https://…"/>  

на ваших страницах. Это поможет поисковым системам лучше ориентироваться у вас.

Большинство веб-серверов предлагают простые решения для редиректа. Инструкции для Apache и для nginx. Используйте код 301 (Moved Permanently).

5: Включите Strict Transport Security и Secure Cookies

На этом шаге вы уже ограничиваете доступ к сайту только для HTTPS. Strict Transport Security сообщает клиентам, что им надо соединяться с сайтом только по HTTPS, даже если ссылка идёт на http://. Это помогает против атак типа SSL Stripping и экономит время на переадресациях из четвёртого шага.

Убедитесь, что ваши TLS-настройки реально работают – например, сертификат не просрочен. На этом шаге любая ошибка будет блокировать доступ к сайту.

Включите HTTP Strict Transport Security посредством заголовка Strict-Transport-Security. На этой странице есть ссылки на инструкции для разных серверов.

Примечание: max-age измеряется в секундах. Начните с небольших величин и по мере роста уверенности в работе сайта увеличивайте их.

Для того, чтобы клиенты всегда отправляли куки по защищённому каналу, включите флаг Secure для куков. На этой странице есть инструкция для этого.

Проблемы с миграцией

habr.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector