Как сделать http вместо https


26.07.2018 Время прочтения: 4 минуты

Поскольку любая активность в сети подразумевает передачу каких-либо данных (то есть всегда есть какой-то запрос к серверу и ответ от него), то нужны правила такой передачи, а также канал и транспортный механизм. Всё это в себе совместил протокол HTTP – он стал стандартом, который используется повсеместно. Именно HTTP позволяет браузеру ПК или гаджета загрузить и отобразить содержимое веб-ресурса.


Но у HTTP есть один (большой) недостаток: никакие передаваемые данные не защищаются и не шифруются. Если на пути к серверу и обратно есть точка, которую контролирует злоумышленник, то он легко их перехватит. Такой расклад надо было менять, поэтому на смену пришел защищенный протокол HTTPS:

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

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

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


Защищенный протокол HTTPS

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

  1. Подтвердить, что лицо, на которое он выпущен, существует на самом деле (там есть цифровая подпись).
  2. Доказать, что это лицо действительно управляет сайтом / сервером.

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

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

  • DV или Domain Validated (с проверкой домена) – сертификат, доступный физлицам и организациям, которые защищает данные, но не является доказательством того, что сам владелец сайта – проверенное лицо, которому можно доверять. Подходит для личных сайтов (блог, портфолио, визитка).

  • OV или Organization Validated (с проверкой организации) – доступен только организациям (коммерческим, некоммерческим, государственным), проверяет документы существования юридического лица, а также кому принадлежит домен. Подходит интернет-магазинам, поставщикам услуг.
  • EV SSL – Extended Validation SSL (с расширенной проверкой организации) – визуально выделяется в браузере, поскольку такой домен прошел многоэтапную тщательную проверку. Поэтому его используют онлайн-ресурсы банков, платежных сервисов и крупные сайты.

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

Поэтому если вы продвигаете свой сайт на http в Google, переезд на HTTPS необходим.

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

seo.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?

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

По сути, HTTPS —это расширение протокола HTTP, поддерживающее шифрование, что обеспечивает безопасность передачи данных.

Как сделать http вместо https

Плюсы и минусы HTTPS

Так почему же мнения специалистов разделились? Дело в том, что использование протокола HTTPS имеет как свои плюсы, так и минусы.

К отрицательным моментам использования HTTPS можно причислить:

  • ежегодно оплачиваемый сертификат, стоимостью примерно от $20 в год;
  • снижение скорости работы сервера, так как часть его ресурсов будет уходить на шифрование передаваемых данных.

К положительным:

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

Корректный перевод сайта с HTTP на HTTPS

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

  1. Оба сайта http : // site . ru / и https : // site . ru / должны быть доступны для поисковых систем.
  2. Для сайта http : // site . ru / в Яндекс.Вебмастере в разделе «Настройка индексирования» в пункте «Главное зеркало» установите главным зеркаломhttps : // site . ru /.
  3. В файлах http : // site . ru / robots.txt и https : // site . ru / robots.txt пропишите директиву «Host» с протоколом HTTPS:Как сделать http вместо https
  4. Дождитесь смены главного зеркала в Яндексе на https : // site . ru /.
  5. Настройте постраничный 301-ый редирект со страниц с протоколом HTTP на страницы с протоколом HTTPS.
  6. Обновите XML-карту сайта — замените в ссылках протокол HTTP на HTTPS. Обновите ссылку на карту сайта в файле robots.txt, например:Как сделать http вместо https
  7. При использовании в HTML-коде абсолютных ссылок необходимо указать в них протокол HTTPS вместо HTTP.
  8. При использовании теговили— ссылки в них также необходимо обновить на HTTPS.

Использование HSTS

При использовании защищенного соединения сервер затрачивает больше времени на передачу данных. Поэтому рекомендуем использовать веб-сервер, поддерживающий механизм HSTS (заранее убедитесь, что он включен), что позволит ускорить обработку запросов сервером. В этом случае браузер будет запрашивать страницы через протокол HTTPS, даже если пользователь введет http : // site . ru / в адресной строке.

В файл .htaccess добавляем следующие строки:Как сделать http вместо https

Основные ошибки

Описание проблемы Действие
Просроченные сертификаты. Вовремя обновляйте сертификаты.
В сертификате неправильно указан основной хост. Проверьте, на какое имя хоста зарегистрирован сертификат. Пример такого
Не поддерживается указание имени сервера (SNI, Server name indication). Ваш веб-сервер должен поддерживать SNI. SNI поддерживают все современные браузеры. Для поддержки устаревших браузеров вам понадобится выделенный IP-адрес.
Старые версии библиотек. Старые версии OpenSSL уязвимы. Используйте последние версии библиотек TLS.
Совмещение защищенных и незащищенных элементов. Размещайте на страницах HTTPS только защищенное содержание.
Разное содержание на страницах HTTP и HTTPS. Содержание на страницах HTTP и HTTPS должно быть идентичным.

В заключение

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

www.cossa.ru

Есть интересные улучшения конфигурации, которые могут сделать SSL/TLS менее дорогостоящими, как описано в этом документе (по-видимому, основанное при работе от команды из Google: Adam Langley, Nagendra Modadugu и Wan-Teh Chang): http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html

Если есть один момент, который мы хотим сообщать миру, что SSL/TLS не является вычислительным дорогой. Десять лет назад возможно, это было правдой, но это просто не так. Вы тоже можете позволить включить HTTPS для ваших пользователей.

В январе этого года (2010) Gmail переключился на использование HTTPS для всего по умолчанию. Раньше это было введено как вариант, но теперь все наших пользователей используют HTTPS для электронной почты между браузерами и Google, все время. Чтобы сделать это нам пришлось развернуть без дополнительных машин и специального оборудования. На наши производственные интерфейсные машины, SSL/TLS составляет менее 1% от загрузка процессора, менее 10 КБ памяти за соединение и менее 2% сетевые накладные расходы. Многие люди верят что SSL занимает много процессорного времени и мы надеемся, что вышеуказанные цифры (общедоступные для в первый раз) поможет рассеять что.

Если вы перестанете читать сейчас, вам нужно только помнить одно: SSL/TLS не вычислительно дорогой.

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

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

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

qaru.site

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

Безопасность прежде всего

Итак, что же такое HTTPS? Данное название является аббревиатурой от «HyperText Transfer Protocol Secure» (в переводе «Безопасный трансферный протокол гипертекста»). И являет собой симбиоз нескольких сетевых протоколов – базового HTTP и криптографических SSL/TLS. Теперь передающиеся данные зашифровываются для повышения безопасности установленного интернет соединения, способствуя его надёжности и защищённости.

Ныне всё больше сайтов переходят на соединение HTTPS как из-за повышенного уровня безопасности данного протокола, так и из-за обещания компании Google предоставлять приоритет сайтам с https в выдаче поисковых результатов.

Отключаем https

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

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

Как отключить https в браузере

Чтобы отключить https в браузере для конкретного сайта делаем следующее.

  1. Уходим с данного сайта, закрываем все вкладки, оставив одну базовую;
  2. Очищаем всю историю активности и кэш;
  3. Заходим на служебную страницу браузера, вбив в адресной строке следующее:
  • Для Яндекс.Браузер — http://about:netinternals#hsts
  • Для Гугл Хром — chrome://net-internals/#hsts

В поле ввода «Delete Domain» вбиваем имя домена сайта (к примеру, образец.com), и жмём на «Delete». Теперь в следующий раз вводите адрес сайта с http, а не https, и пользуйтесь возможностями незащищённого соединения.

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

Также вы можете изменить настройки безопасности HTTPS в настройках вашего браузера. К примеру, для Хром это можно сделать зайдя в настройки, выбрать «Показать дополнительные настройки», и выбрать «Настроить сертификаты» в пункте HTTPS.

Как убирать https из Вконтакте

Сайт социальной сети «Вконтакте» позволяет отключить использование протокола https при работе с данной социальной сетью.

  1. Для этого зайдите в настройки вашей  страницы (vk.com/settings).
  2. Перейдите во вкладку «Безопасность» и снимите галочку с пункта «Использовать защищённое соединение (HTTPS)».
  3. При этом некоторые пользователи рекомендуют при отсутствии изначально там галочки поставить её, нажать на «Сохранить», а затем забрать её, и вновь нажать на «Сохранить».

При следующем входе на сайт ВК помните об особенностях редиректа (который указан чуть сверху), удалите упоминание о данном домене как указано сверху, а затем заходите на данный ресурс с использованием http.

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

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

sdelaicomp.ru

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

Что такое HTTPS

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

Для чего нужен сертификат SSL

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

  • домен сайта;
  • полное юридическое название компании-владельца;
  • физический адрес компании;
  • срок действия сертификата;
  • реквизиты разработчика SSL.

Сертификат понадобится и для подключения любой платежной системы, например «Яндекс.Денег». Логика простая – никто не позволит вам рисковать чужими деньгами.

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

Они делятся на два типа, в зависимости от степени защиты и верификации.

Domain Validation SSL

Самый простой вариант. Заработает после того, как вы подвтердите владение доменом. Сделать это можно тремя способами:

  • Через E-mail. Вам на почту придет письмо с инструкцией по верификации. В качестве адреса отправки выбирается либо почта из Whois домена, либо ящики админа или вебмастера.
  • Через запись в DNS. Если у вас настроен сервер электронной почты, создайте специальную запись в DNS. По ней система и подтвердит, что вы действительно владелец сайта. Метод автоматизирован и подходит тем, у кого почта Whois скрыта в настройках.
  • Через хэш-файл. Разместите специальный .txt файл у себя на сервере, чтобы центр сертификации смог установить его наличие.

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

Business Validation

Этот вид сертификата SSL надежней, потому что вы подтверждаете факт связи компании с сайтом. Для этого нужно отправить в верификационный центр несколько документов и принять звонок на корпоративный номер. Business Validation-сертификаты делятся на 3 вида:

  • Extended Validation SSL. Это сертификаты с расширенной проверкой. Они нужны всем, кто работает с большим объемом денег: банкам, крупным интернет-магазинам, финансовым компаниям, платежным системам.
  • Wildcard SSL. Такой сертификат защищает и сам сайт, и его поддомены. Причем их может быть любое количество, а располагаться они могут на разных серверах. Обязателен, если вы используете поддомены с разной региональной привязкой или разными проектами.
  • SAN SSl. Главное преимущество этого типа сертификата – поддержка альтернативных доменных имен: и внешних, и внутренних.
  • CodeSigning SSL. Подтверждает сертификатом безопасность кода и программных продуктов с сайта. Подойдет разработчикам любых приложений.

Можно ли установать на свой сайт бесплатный SSL-сертификат?

Да. Большинство таких продуктов платные, но есть и варианты, за которые не придется отдавать деньги. Это базовые сертификаты с валидацией по домену. Они не позволят прикрутить к ресурсу онлайн-кассу, но защитить соединение пользователя с сервером смогут. Такие SSL подойдут небольшим информационным сайтам или офлайн-бизнесам. Пример – базовый сертификат StartSSL.

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

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

В процессе генерации ключа CSR нужно указать:

  • Имя сервера: «site.com» или «*.site.com», если получаете WIldcard сертификат. Звездочка означает любое количество любых символов перед точкой.
  • Код страны: RU, UA, KZ и так далее.
  • Область, например, Saratov Region.
  • Город.
  • Полное название организации или имя владельца сайта.

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

После этого нужно установить сертификат на веб-сервер. Рассмотрим случаи с Apache и nginx.

Apache

Чтобы это сделать, нужно загрузить на сервер все сертификаты: и основные, и промежуточные. Первым делом нужно последний в директорию /usr/local/ssl/crt (используется по умолчанию, в вашем случае может отличаться). В ней будут храниться все сертификаты.

После этого скачайте основной сертификат, откройте его в любом текстовом редакторе и полностью скопируйте содержимое вместе со строчками «BEGIN» и «END».

В директории /ssl/crt/ создайте файл vashsite.crt и вставьте в него содержимое сертификата.

Файл приватного ключа переместите в директорию /usr/local/ssl/private/

В файле VirtualHost добавьте строки:

Указывать нужно действительные пути до файлов. Сохраните изменения и перезапустите сервер.

nginx

Здесь процесс установки SSL сертификата немного отличается. Сначала нужно объеденить корневой, промежуточный и SSL-сертификаты в один. Для этого создайте файл vashsite.crt и вставьте туда содержимое сертификатов вместе со строчками «BEGIN» и «END» (порядок: SSL, промежуточный, корневой). Пустых строк быть не должно.

Почти то же самое нужно сделать и с приватным ключом – создать файл vashsite.key и перенести содержимое ключа, загруженного с сайта поставщика.

Оба файла (vashsite.crt и vashsite.key) поместите в директорию /etc/ssl/ (она используется по умолчанию, но может отличаться).

В файле с конфигурациями отредактируйте VirtualHost. Добавьте:

Если директория с сертификатом и ключом отличается от дефолтной, поменяйте ее.

Теперь сохраните изменения и перезапустите nginx.

Как получить рабочее HTTPS-соединение

После установки сертификатов SSL сайт станет доступен по двум адресам: http://vashsite.com и https://vashsite.com. Вам нужно оставить только последний. Для этого настройте файл robots.txt и сделайте 301-редирект со старого сайта.

В «robots» нужно обновить host. Пример: Host: https://vashsite.com. Для настройки редиректа нужно добавить в файл .htacsess строчки:

Теперь осталось сообщить об изменениях поисковикам. В «Вебмастере» «Яндекса» добавьте страницу с https и укажите ее как главное зеркало для старого сайта.

Итоги

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

semantica.in

Как сделать редирект  с https на http?

Решение 1

 

Делаем редирект на http с помощью .htaccess

Замечание Перечисленные ниже варианты предназначены для серверов Linux.

Пояснения для всех последующих вариантов Редактируем или создаём, если его нет, файл .htaccess в корневой папке вашего сайта, и добавляем сразу после
RewriteEngine On
один из нижеперечисленных вариантов, при этом не забыв изменить site.ru на URL вашего сайта.

Вариант 1
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Вариант 2
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Вариант 3
RewriteCond %{HTTPS} =on
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Вариант 4
RewriteCond %{SERVER_PORT} 443
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Вариант 5
RewriteCond %{HTTPS} =on
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

Вариант 6
RewriteCond %{HTTP:SSL} =1 [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,L]

Вариант 7
RewriteCond %{HTTP_HOST} !^site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Вариант 8
RewriteCond %{HTTP:SSL} =1 [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [L,R=301]

Вариант 9
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 10
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{ENV:HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Попробуем ещё вариант — вместо %{HTTPS} указать %{ENV:HTTPS}

Вариант 11
RewriteCond %{ENV:HTTPS} on
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 12
RewriteCond %{ENV:HTTPS} On
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

Замечание Если не работает, то можно попробовать поместить, указанные выше строки, в выражение IfModule.

 

ВАЖНОПри открытии сайта, Сначала браузер проводит проверку наличия SSL-сертификата и уже затем срабатывает редирект. Другими словами, если на сайте нет SSL-сертификата, то посетители сначала увидят предупреждение браузера о незащищённом контенте, и уже затем сработает редирект на http ….

ЗамечаниеОбычно, при открытии сайта, Сначала браузер, как правило, открывает версию https сайта. Но это не точно. На самом деле, это зависит от настроек сервера и сайта. Если вебсервер отдаёт заголовок «Strict-Transport-Security» ( смотрим в настройках add_header Strict-Transport-Security ), тогда браузер будет открывать сайт по HTTPS протоколу. Дополнительно, этот заголовок появляется, если в настройках web-домена установлено: «Повышенная безопасность SSL»

Если Решение 1 не работает?

  В частности этим грешат серверы и VDS с панелью ISP Manager 5 ( на других панелях управления, например cPanel, с Lunix на этом же сайте переадресация работает! )

Решение 2

Открываем и внимательно смотрим ваш сайт (для примера site.ru )именно по протоколу httpS
если он не ваш и отличаются и по внешнему виду и по контенту, то нужно выяснить его ( URL ). Обычно это один из https сайтов, расположенный на вашем IP адресе. Найти список сайтов на вашем IP можно стандартным сервисом «Сайты на одном IP»

Итак, — хорошо — вы узнали, какой это сайт ( назовём его, для удобства https-sait.ru )

И теперь все дальнейшие правки, как ни странно, будем вести не на проблемном сайте, а на найденном (https-sait.ru)!

 

Идея: поставить передресацию с https на http на найденном https сайте https-sait.ru

13 Решение: создаем в корне этого сайта в файле htaccess правила типа условное выражение такого вида:

#
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www.sait.ru$ [NC]
RewriteRule ^(.*)$ http://www.sait.ru/$1 [R=301,L]
#
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^sait2.ru$ [NC]
RewriteRule ^(.*)$ http://sait2.ru/$1 [R=301,L]
#
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^sait3.ru$ [NC]
RewriteRule ^(.*)$ http://sait3.ru/$1 [R=301,L] # и так далее... для одного сайта sait.ru или всех остальных http сайтов (sait2.ru, sait3.ru) , которые есть на вашем хостинге.

Пробуем, проверяем.

Подводим итог.

Другими словами, для того, чтобы сделать редирект с https на http вашего сайта sait.ru, вам потребуется найти и открыть https-sait.ru, отредактировать там .htaccess файл, прописав правила аналогичные пункту 13 для каждого вашего сайта: sait 1, 2, 3.ru

Вот такие странности панели ISP Manager ….

Почему это происходит?

Отступление

одлодл

 

 

 

Решение 3

Замечание Предлагаемое решение работает на серверах с NginX.

Если у вас сервер с nginx, тогда делаем переадресацию в его настройках

 

Вариант 3.1

    server {   server_name site.ru;   listen ip:443 ssl;   # пути к сертификату   ssl on;   expires max;   return 301 http://site.ru$request_uri;  }  

Указав, вместо ip — ваш реальный IP, вместо site.ru — URL вашего сайта и вместо # пути к сертификату — реальный путь. Сохраняем и перегружаем сервер

Модифицированный вариант:

Вариант 3.2

   server {   server_name site.ru;  	return 301 http://$server_name$request_uri;    listen ip:443 ssl;   # пути к сертификату   ssl on;   expires max;   return 301 http://site.ru$request_uri;  }  

находим и удаляем там же строку
add_header Strict-Transport-Security "max-age=31536000;";

Если что то не работает, перезагружаем nginx и смотрим ошибки, которые находятся в /var/log/nginx/error.log

Замечание Если нужно, чтобы сайт открывался как по http, так и по протоколу https, то вышеуказанные варианты приведут к зацикливанию ….

Нужно же, чтобы сайт открывался как по http, так и по https. Если прописывать редирект в nginx на http

Вариант 3.2

Некоторые, устав бороться с NginX, сносят его и ставят классический редирект

Решение 3

Сделать редирект с https на http в файле .htaccess

Решение даётся здесь

https://moisait.ru

 

Решение 1.2

 

Решение 2

joom-la-la.ru


You May Also Like

About the Author: admind

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

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

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