Разное

Как сделать https вместо http – Как перейти с http на https? Пошаговая инструкция. Переход на Https в Joomla и WordPress

09.02.2018

Содержание

Как перейти с http на https? Пошаговая инструкция. Переход на Https в Joomla и WordPress

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

Что меня побудило перейти на протокол https? В последнее время мне на глаза стали попадаться вот такие заголовки: Браузер Mozilla Firefox в скором времени перестанет поддерживать небезопасные http-соединения; Правительство США поручило всем государственным сайтам перейти на HTTPS; C января 2017 года все сайты, передающие секретные данные (пароли, номера кредитных карт и т.д.) по незащищенному соединению в браузере Google Chrome будут помечаться как небезопасные. Плюс ко всему где-то в интернете читал, что скоро всем сайтам придется перейти на протокол https в обязательном порядке. Я подумал, что в один прекрасный день все равно эта участь постигнет и меня. Так зачем же тянуть? Тем более хостинг beget.ru, на котором я сижу предоставил возможность для приобретения бесплатных SSL-сертификатов. В общем, собрал всю необходимую информацию по тому, как перейти с HTTP на HTTPS и сделал это.  🙂

Структура статьи

Зачем нужно использовать 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) — расширенная проверка компании. Данный вид сертификата могут позволить себе купить только крупные компании. Для его получения необходимо предоставить всю подробную информацию о компании — название организации, реквизиты, наличие о государственной регистрации, реальные звонки для утверждения полученных данных и многое другое. Да, получение такого вида сертификата дело хлопотное, но поверьте оно того стоит. Более того, рядом с адресной строкой в браузере будет отображаться название компании. Вот как это выглядит на примере сайта Сбербанка.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обновлено — 15.12.2016

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

Важно! Включайте данную опцию именно тогда, когда вы уверены, что сертификат у вас уже установлен и сайт доступен по протоколу Https.

Ошибка при переходе на 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 все адреса хранятся в базе данных в абсолютном виде. После изменения настройки сайта все адреса должны поменяться и в базе данных. Поэтому на случай, если пойдет что-то не так сделайте бэкап.

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

zaurmag.ru

Как перейти на HTTPS

Если еще недавно протокол HTTPS был относительной редкостью, то сегодня переход на него становится необходимостью для многих сайтов.

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

Что такое HTTPS и для чего он нужен

Что такое HTTPS

HTTPS (HyperText Transfer Protocol Secure) — это расширение HTTP-протокола, его используют, чтобы защитить от мошенников конфиденциальные данные, которые пользователи вводят на сайте. Сайтам с протоколом HTTPS доверяют больше, потому что пользоваться им безопаснее.

С июля 2018 года в браузере Google Chrome 68 все сайты с HTTP будут иметь пометку как ненадежные, как написано в блоге компании. Этот браузер довольно популярен, так что стоит озаботиться переходом на HTTPS, чтобы избежать пометки.

У небезопасных сайтов появится пометка

Из-за этого сайты постепенно переходят на новый протокол, с каждым годом тенденция сохраняется .

Данные из блога Chromium на февраль 2018 года:

  • 64% трафика Chrome на Android и Windows защищены протоколом безопасности. В 2017 году было 64% трафика.
  • Более 78% трафика Chrome на ChromeOS и Mac защищены. В прошлом году было 75%.
  • 81 из 100 лучших сайтов используют HTTPS по умолчанию, в прошлом году их было 71.

Судя по росту показателей с каждым годом, процесс перехода сайтов будет продолжаться.

Чем HTTPS отличается от HTTP

Главное отличие — HTTPS перед передачей транспортным протоколом шифрует данные, используя криптографические протоколы SSL и TLS.

Протокол SSL (Secure Sockets Layer) нужен для защиты данных, он гарантирует безопасное соединение браузера пользователя и сервера. Для него требуется установка SSL-сертификата.

А TLS ( Transport Layer Security ‒ безопасность на транспортном уровне) обеспечивает информации три уровня защиты:

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

2.Сохранность. Все намеренные или ненамеренные изменения данных фиксируются.

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

Зачем нужен HTTPS-протокол

Рекомендуем переход на HTTPS, потому что это даст преимущества перед HTTP:

  • Мошенники не смогут получить доступ к данным, которые передаются через сайт.
  • Google Chrome помечает сайты с HTTP как небезопасные, поэтому их репутация ниже.
  • Пользователи больше доверяют безопасным сайтам.
  • В 2018 HTTPS становится стандартом.
  • В перечне факторов ранжирования есть наличие HTTPS.

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

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

Как перейти на HTTPS

Выбор времени перехода

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

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

Если сайт предварительно не подготовить, могут возникнуть технические проблемы или время всей операции затянется. Как подготовить сайт к переходу на HTTPS:

  1. Если на внутренних ссылках есть указание на протокол, уберите его. Это нужно, чтобы не возникло ошибок при индексации. К примеру, если раньше ссылка выглядела как «http://site.ru/text/», приведите ее в форму «//site.ru/text/».
  2. То же самое нужно сделать со внешними ссылками, привести их url в относительный вид. Иначе могут появиться сбои при функционировании сайта.
  3. Адреса медиаконтента тоже нужно перевести в относительные ссылки. Если объекты базируются на вашем сайте, то этого достаточно. Если некоторые медиа подгружаются со сторонних ресурсов, то проверьте, поддерживают ли они HTTPS. Не поддерживают — заменяйте, они не будут работать на вашем сайте после смены протокола. Это можно сделать быстрее, если исправить протокол на относительный сразу в базе данных для всех ссылок.
  4. Ссылки в rel=»canonical» и rel=»alternate» также замените на относительные.
  5. Проверьте, что сторонние сервисы, которые вы используете на сайте, поддерживают HTTPS. Популярные обычно поддерживают этот протокол, к примеру Яндекс.Метрика, Директ, Google Analytics, но другие стоит проверить.

Заложите на подготовку срок с запасом, потому что на эти преобразования может понадобиться долгое время, особенно если у вас большой сайт.

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

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

Какой SSL-сертификат выбрать

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

Переходим на страницу заказа SSL-сертификатов и выбираем нужный тип:

1.DV-сертификат (Domain Validated) — самый простой, подходит для физических лиц и юридических лиц, выдается на один домен одному владельцу. Сертификат защищает информацию, но не гарантирует, что владельцу можно доверять.
Для установки потребуется проверка принадлежности домена. Такой сертификат можно установить на личный блог, небольшой сайт-визитку.

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

Сайт с сертификатом безопасности

2. OV-сертификат (Organization Validation) — сертификат для коммерческих и некоммерческих организаций, юридических лиц. Для выдачи нужна проверка существования юрлица или ИП и проверка принадлежности домена.

Этот сертификат подходит порталам, магазинам, компаниям, предоставляющим услуги..

Визуально такая форма будет выглядеть как DV-сертификат.

Сайт с сертификатом безопасности

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

Этот сертификат обычно заказывают банки и крупные организации.

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

Сайт с сертификатом и дополнительной формой

Дополнительно сертификаты могут иметь опции: Wildcard, то есть поддержку поддоменов сайта, SAN — поддерживать несколько доменов на одном сервере, IDN (Internationalized Domain Names) — поддержку кириллических доменов.

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

После покупки нужно установить SSL на хостинг, если вы покупали сертификат у своего хостера, это будет чуть проще.

Сертификат обычно покупается как домен или хостинг: на год-два, а потом продлевается.

Как установить SSL-сертификат

После покупки у вас должен быть файл сертификата, файл ключа и два файла цепочки сертификатов.

1.Войдите в личный кабинет хостинга вашего сайта.

2.Найдите раздел SSL.

3. Загрузите эти файлы в соответствующие поля.

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

Загрузка сертификата на reg.ru

4. Проверьте, доступен ли сайт по по HTTP-протоколу и по HTTPS. Он должен быть доступен по обоим.

5. Проверьте корректность установки сертификата на сайте: страницы сайта корректно открываются по URL с учётом нового протокола, а конфигурация SSL корректно установлена. Проверить правильность конфигурации SSL-сертификата можно на сервисе Sslshopper: вставьте адрес сайта в строку и нажмите проверку. Если установка прошла корректно, появится примерно это:

Результаты проверки SSL

Проверить настройку также можно с помощью Ssllabs, сервис проведет анализ конфигурации SSL. Вводите адрес сайта и нажимаете проверку, если все в порядке, появится такой результат:

Успешный результат проверки

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

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

SSL-сертификат установлен, но выдыхать рано – нужно провести еще некоторые манипуляции в коде сайта и его настройках.

Завершение перехода с HTTP на HTTPS

Проводим техническую настройку

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

Пока идет склейка, сайт нужно оставить доступным по обоим адресам. При доступности обеих версий Google сразу будет показывать версию с HTTPS, а Яндекс будет делать это после склейки.

Кроме того, нужны некоторые завершающие действия:

1.Настройте постраничный 301 редирект.
Когда склейка завершится, следует настроить постраничный 301 редирект на страницы с новым протоколом.

Для перенаправления подойдут строчки кода в файле .htaccess:

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ <a href="<a href=" <a="">https://site.ru/</a>">https://site.ru/$1">https://site.ru/$1 [R=301,L]
Либо такой вариант:
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) <a href="about:blank">https://{HTTPS_HOST</a>}%{REQUEST_URI} [NC,R=301,L]

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

2.Настройте robots.txt, чтобы роботы индексировали сайт только по одному новому протоколу, то есть укажите, что версия с HTTPS — главная. Для этого в файле robots в директиве host добавьте https://.

3.Настройте sitemap.xml, аналогично добавив https://.

4. Проверьте rel=»canonical» и rel=»alternate», там также должны быть ссылки с HTTPS.

5. Поработайте со внутренними ссылками, включая URL всех статических файлов. В HTML-коде абсолютных ссылок замените HTTP на HTTPS.

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

6. Настройте метатег для реферального трафика.
Если на вашем сайте есть рекламные баннеры, ведущие на сайты без HTTPS, то метрики могут не распознавать ваш сайт с сертификатом как источник трафика. Переходы на такие сайты с вашего ресурса Яндекс.Метрика или Google Analytics могут относить к прямому трафику.

Чтобы такого не произошло, добавьте метатег на страницы до тега . Часть «origin» будет означать передачу протокола и домена.

Теперь об изменениях нужно оповестить поисковики – они должны быть в курсе смены протокола.

Оповещаем Яндекс и Google о смене протокола

Оповещаем поисковики. Яндексу о смене протокола можно рассказать здесь:

Сделайте пометку на добавлении HTTPS

А Google – здесь:

Нужно добавить сайт с новым протоколом в Search Console

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


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

pr-cy.ru

Мигрируем на HTTPS / Habr

В переводе этого документа описываются шаги, которые необходимо предпринять для перевода вашего сайта с 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, можно без проблем.

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

<h2>Welcome To Example.com</h2>
<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>

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

<h2>Welcome To Example.com</h2>
<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>

или такое:

<h2>Welcome To Example.com</h2>
<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 для куков. На этой странице есть инструкция для этого.

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

Позиция в поисковой выдаче

Google ставит наличие HTTPS в плюс сайтам. У Google также есть инструкция по тому как переходить на безопасный режим, не теряя позиций в поиске. Также такие инструкции есть у Bing.

Быстродействие

Когда сервер работает нормально, траты на TLS обычно малы. По поводу их оптимизации читайте High Performance Browser Networking by Ilya Grigorik и Ivan Ristic’s OpenSSL Cookbook и Bulletproof SSL And TLS.

В некоторых случаях TLS может увеличить быстродействие – это справедливо в случае использования HTTP/2.

Заголовки Referer

Клиентские программы не отправляют Referer, когда пользователи переходят по ссылкам с вашего HTTPS-сайта на другие HTTP-сайты. Если вам это не нравится:

— другие сайты тоже должны мигрировать на HTTPS. Предложите им эту инструкцию. Если они дойдут хотя бы до 2 шага, то ситуация выправится
— вы можете использовать новый стандарт Referrer Policy, решающий проблемы с этими заголовками

Так как поисковики мигрируют на HTTPS, то вы скорее всего получите больше заголовков Referer, когда сами перейдёте на HTTPS.

Согласно HTTP RFC:

Клиент НЕ ДОЛЖЕН включать заголовок Referer в небезопасный HTTP-запрос, если ссылающаяся страница получена по безопасному протоколу.

Монетизация

Если на вашем сайте крутятся объявления рекламной сети, может возникнуть проблема –iframe с HTTP не будут работать на странице с HTTPS. Пока все рекламодатели не перейдут на HTTPS, операторы не могут перейти на HTTPS, не теряя рекламных доходов. Но пока операторы не мигрируют на HTTPS, у рекламодателей нет мотивации для миграции.

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

habr.com

инструкция по переезду на защищенный протокол https за 4 шага

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

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

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

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

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

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

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

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

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

    Предупреждение в Яндекс Вебмастере

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

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

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

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

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

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

Шаг 1: Подготовка сайта

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

Бэкап

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

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

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

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

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

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

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

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

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

Даю 2 рабочих вариант:

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

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

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

Адрес сайта

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

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

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

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

Robots.txt и Sitemap.xml

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

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

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

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

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

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

Типы ssl

Все сертификаты выдаются для 1 домена:

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

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

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

Активация https для домена

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

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

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

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

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

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

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

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

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

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

У вас есть ключи и все что вам нужно сделать — это добавить их в панели своего хостинга.

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

Шаг 3: Оповещаем поисковые системы

После покупки и установки сертификата на подготовленный сайт мы можем оповестить о наших действиях поисковые системы Яндекс и 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]

или

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

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

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

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

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

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

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

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

Проверка корректности 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 упали позиции, что делать?
Это тоже нормально. От момента переезда я обычно засекаю 3-4 недели (примерно) и не обращаю внимания на колебания. По истечении этого срока уже должна произойти склейка (в вебмастере зеркала будут слеплены вместе) и тогда можно делать какие-то выводы. Чаще всего все восстанавливается и иногда даже с плюсом.

Я хочу ЧПУ и SSL — в какой последовательности делать
Очень скользкий вопрос, сродни «Какой рукой открывать дверь: правой или левой?». Я опасный и потому делаю все сразу за 1 раз :). Проблем вроде не было, но склейка была дольше.

romanus.ru

Как перенести сайт на HTTPs. Пошаговая инструкция — Devaka SEO Блог

Многие серьезные проекты использовали HTTPS ещё в 2000х, часть перешли на защищенный протокол в 2010-2011, когда был большой бум из-за утилит иранского хаккера Марлинспайка Firesheep и SSLStrip, позволяющих воровать персональные данные с незащищенных сайтов. Совсем недавно правительство США поручило всем федеральным сайтам перейти в срочном порядке на HTTPS до конца 2016 года. И уже совсем скоро Mozilla Firefox перестанет поддерживать небезопасные HTTP-соединения в браузере. В связи с этим, предвидится новый бум и массовый переход на HTTPS. Рано или поздно вам тоже придется с этим столкнуться.

Чтобы сильно не рисковать незначительным снижением трафика, как раз летом, в отсутствие сезона, у вас есть время заняться переносом сайта с HTTP на HTTPS. Тем более, что Яндекс прекратил обновлять выдачу, а Google обещает давать приоритеты защищенным сайтам.

Как же перенести свой сайт на HTTPs? Ниже представлена пошаговая инструкция.

1. Подготовка сайта

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

— Смена ссылок внутренней перелинковки с абсолютных на относительные.

Относительные ссылки бывают двух типов:

1. Относительные вне зависимости от домена

https://devaka.ru/about/ — абсолютная.
/about/ — относительная.

2. Относительные вне зависимости от протокола.

https://devaka.ru/about/ — абсолютная
//devaka.ru/about/ — относительная

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

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

— Исправление вложений медиа-контента

Проверьте, какой медиа-контент (изображения, видео, презентации, и др.) вы используете у себя на сайте и по какому протоколу его запрашиваете. Здесь необходимо тоже все перевести в относительные адреса, и тогда при переходе на HTTPS у вас медиа-контент также будет подгружаться с защищенных сайтов. Но стоит убедиться, что он действительно доступен по HTTPS.

Если используемые вами картинки хранятся на вашем сайте, то просто используйте относительные адреса //site.ru/img/mega-image.jpg. Если вы подгружаете картинки с внешних ресурсов (CDN или других сайтов), то они также должны поддерживать HTTPS, иначе стоит отказаться от этих вложений.

Популярные сервисы, которые позволяют внедрять свой контент, типа YouTube, SlideShare, виджеты VK или Facebook, и другие, уже давно поддерживают HTTPS, поэтому с ними проблем не возникнет. Но если вы используете медиа-контент с непопулярных сервисов, то уточните, будет ли этот контент работать/отображаться, если вы смените протокол.

— Исправление подключений внешних скриптов

Во внешних скриптах также нужно использовать относительные URL. Например, для библиотеки jQuery, вместо кода:

<script src=»http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js»></script&gt;

Нужно использовать:

<script src=»//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js»></script>

Также и с другими скриптами: Яндекс.Метрика, LiveInternet, Google Analytics, Яндекс.Директ, различные javascript библиотеки и др. Здесь принцип тот же: популярные сервисы и библиотеки поддержкивают HTTPS, а вот с непопулярными могут возникнуть проблемы (как например, у ПриватБанка или Корреспондента с сетью MediaTraffic, которые до сих пор её использует по небезопасному соединению).

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

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

После того, как вы сделали все внутренние и внешние ссылки относительными, проверили доступность медиа-контента и скриптов по протоколу HTTPS, можно заняться установкой и настройкой SSL-сертификата.

— Выбор и приобретение подходящего SSL-сертификата

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

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

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

3. Wildcard. Сертификаты, которые выдаются на все поддомены одного домена. Если у вас много региональных или других поддоменов, то обязательно нужно брать wildcard-сертификат.

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

Подробнее о видах сертификатов можно ознакомиться в этой статье:
http://habrahabr.ru/company/tuthost/blog/150433/

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

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

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

— Проверка доступности сайта через HTTPS-протокол

Установив ssl-сертификат, убедитесь, что теперь сайт доступен по двум адресам, с http:// и https://. Если по какому-то адресу он оказался недоступным, то нужно срочно искать причину и решать эту проблему.

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

После успешной настройки сертификата на сервере можно заняться настройкой сайта. Здесь тоже придется попотеть.

— Настройка директивы Host в файле robots.txt

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

Яндекс требует для новой версии сайта указать директиву Host в файле robots.txt, где явно прописать используемый протокол. Например, в моем robots это выглядит так:

Host: https://devaka.ru

Теперь Яндекс будет знать, что среди всех зеркал, указанное вами с протоколом HTTPS – самое главное.

— Установка 301 редиректа с http на https

Раньше (еще в начале года) требовалось ждать, пока Яндекс переклеит зеркала, и уже потом перенаправлять пользователей. Это могло плохо повлиять на трафик из Google. Сейчас не обязательно ждать работу зеркальщика Яндекса, а можно сразу настраивать 301 редирект с HTTP версии на HTTPS.

Для большинства серверов подойдут такие строчки кода в .htaccess-файле:

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

Если этот код не сработает, то обратитесь в техподдержку хостинга за консультацией.

— Исправление найденных ошибок

Проверьте все свои ссылки, доступность сайта, корректность перенаправлений, наличие замочка в адресной строке браузера, все должно работать идеально. Исправьте, если что-то работает не так.

4. Сообщение поисковикам о переносе

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

— Добавление https-версии сайта в панель для вебмастеров

И в Google и в Яндексе необходимо добавить и подтвердить новый сайт, указав версию https. Теперь у вас в списке сайтов будет и та и другая версии. Для Google дополнительных настроек больше делать не надо, достаточно присутствия 301 редиректов.

— Изменение адреса в панели для Яндекса

Для Яндекса необходимо у HTTP-сайта указать главное зеркало HTTPS. Делается это в панели для вебмастеров в меню “Настройка индексирования” — “Главное зеркало” — “Установить протокол HTTPS”.

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

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

– Настройки региона (геотаргетинг)
– Файлы Sitemap.xml
– Список ссылок в Disawov Tool для Google
– Исключенные параметры URL для Google

5. Ожидание переиндексации

На этом все, ваш сайт и ваши пользователи защищены. Google и Яндекс со временем поменяют адрес вашего сайта в поиске.

Смотрите также мой вебинар про особенности перехода на https и возможные проблемы и их решение.

devaka.ru

Повсеместное внедрение HTTPS вместо HTTP, возможно, опасно / Habr

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

Последнее время многие компании продвигают повсеместное использование https и отказ от http. В первую очередь Google. Моя версия Google Chromium (53.0.2785.143) показывает букву i в кружке в строчке браузера, если сайт открыт по http, а не https. Дальше — больше. Google собирается со времнем отображать http-соединение как всё более небезопасное, пугая пользователей «опасным» http всё больше: www.opennet.ru/opennews/art.shtml?num=41263 (новость, правда, от 2014-го года, но по сути, как мне кажется, ничего не поменялось, там есть ссылка на английский оригинал от Chromium).

Недавно появился HTTP/2.0. Он был создан на основе SPDY, который был создан Google. «Несмотря на то, что спецификация допускает создание нешифрованных соединений, разработчики Firefox и Chrome намерены обеспечить работу HTTP/2.0 только поверх TLS» ( www.opennet.ru/opennews/art.shtml?num=41684 ). Напомню, что TLS — это современное развитие SSL. https сейчас обычно работает поверх TLS.

Недавно Google создал QUIC. И опять-таки, шифрование в QUIC обязательно. «Why does QUIC always require encryption of the entire channel?» — цитата из QUIC FAQ (ссылка с блога Chromium). В этом же посте в блоге написано, что QUIC даёт «High security similar to TLS», что в свете постоянных уязвимостей в HTTPS/SSL/TLS и его реализациях выглядит иронией.

Итак, компании продвигают https и отказ от http. В то же время в https и его реализациях постоянно находят уязвимости (Heartbleed, POODLE и т. д.). И есть полно указаний на то, что, возможно, американские спецслужбы знают о многих пока неопубликованных уязвимостях в https, а может быть даже, внедряют свои. Подчеркну: я в этом не уверен, я лишь обращаю внимание на то, что такое возможно. На это указывают утечки Сноудена, публикации в блоге Шнайера. Можно найти огромное количество упоминаний этого в интернете, покажу лишь одну ссылку: www.opennet.ru/opennews/art.shtml?num=37846.

Итак, американская компания Google продвигает https, который американские же спецслужбы предположительно умеют расшифровывать. А российские — предположительно не могут. В том числе потому, что у американских спецслужб есть рычаги для внедрения уязвимостей в тексты стандартов, потому что они могут сотрудничать с производителями компьютеров, смартфонов, операционных систем, с крупнейшими сайтами (Google, Facebook), с крупнейшими IM (Skype, Whatsapp) и так далее (опять-таки, полно упоминаний в интернете).

Сейчас в центре внимания инициативы российского правительства по расшифровке https и прочего трафика: habrahabr.ru/post/310576. И авторов инициативы можно понять. Ведь американские спецслужбы могут расшифровывать, а наши — нет. То есть, скажем, соединение российского пользователся с Facebook’ом американские спецслужбы предположительно видят, а наши — нет. Вот и приходится как-то выкручиваться. Я ни в коем случае не оправдываю эти российские инициативы. Я просто обращаю внимание на то, что за ними стоит некоторая логика.

Процитирую ещё раз уже упомянутый QUIC FAQ:

Why does QUIC always require encryption of the entire channel? As we learned with SPDY and other protocols, if we don’t encrypt the traffic, then middle boxes are guaranteed to (wittingly, or unwittingly) corrupt the transmissions when they try to “helpfully” filter or “improve” the traffic.

С учётом вышесказанного этот абзац выглядит сарказмом. Да, нешифрованный трафик читают и изменяют все кому не лень. Всевозможные «middle boxes». А шифрованный трафик, который зашифрован с помощью QUIC, который обладает «high security similar to TLS» (а мы уже поняли, насколько безопасен TLS), видимо, смогут расшифровать только «middle boxes» американских спецслужб. Но (в данный момент) не российских.

Я пишу всё это просто чтобы показать, что существует альтернативная точка зрения. Если теперь в новостях вида «Chrome показывает ещё более страшный значок, предупреждающий о нешифрованном трафике» не все комменты будут поддерживать нововведение, а будут ещё и несогласные, то я буду считать свою миссию выполненной.

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

UPD от 2016-11-16 20:31. Я ни в коем случае не призываю использовать http вместо https. https безопаснее http. Просто я обращаю внимание на то, что в продвигании https, особенно Google и особенно путём постепенного запрещения http, не всё так однозначно.

habr.com

Удаление принудительного https запроса к сайту / Sandbox / Habr

Сейчас стало модно посылать специальный запрос для браузера, который принудительно будет перебрасывать вас на версию сайта с шифрованием (https). Из-за этого многие пользователи страдают недоступностью сайтов. Ранее, такое происходило с некоторыми, достаточно известными сайтами, из-за промашки веб-разработчиков.

Такой запрос называется Http Strict Transport Security.

Как выяснилось, эта штука работает так: если я как-то раз зашёл на https версию этого сайта и получил при этом заголовок Strict-Transport-Security, то браузер запоминает этот домен, и начинает редиректить на него все обращения по http автоматически. Что у меня и происходило. Когда я поставил сертификат на сайт, нужно было как то заставить сайт принудительно работать на https, мой выбор пал на способ Http Strict Transport Security, конечно, был еще выбор использовать обычный редирект через htaccess, но это было слишком легко для меня. Плохо почитав документацию, по данному заголовку, я упустил момент с установкой времени, как потом оказалось, я установил принудительный редирект на целый год…

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

При чистке cookie браузера, такой заголовок не очищается. Но как же все таки избавиться от этого принудительного редиректа и вернуть доступ к сайту? Сейчас я об этом расскажу.

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

И так, делаем следующее:
1. Закрываем все вкладки в браузере
2. Очищаем историю (желательно)
3. Заходим на специальную страницу для вашего браузера (Ссылки ниже).

  • Для Яндекс.Браузер: about:net-internals#hsts
  • Для Google Chrome, Opera: chrome://net-internals/#hsts
  • * Для Mozilla Firefox: about:permissions. Найти сайт, нажать на кнопку «Forget About This Site»
  • * Для Safari: Удалить файл ~/Library/Cookies/HSTS.plist

4. Находим поле ввода, с именем «Delete domain».
Подробный скрин
5. Вписываем в него домен сайта, на котором хотите убрать редирект. (Формат: example.ru )
6. Нажимаем на кнопку, которая рядом с полем.

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

habr.com

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

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