Существуют два основных протокола взаимодействия сайта с пользователем

http - трафик между ПК пользователя и хостингом не шифруется
https - трафик между ПК пользователя и хостингом шифруется (т.е. например, Ваш провайдер не сможет увидеть, какая информация идет с сайта / на сайт)



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

На сегодня вид в браузере Chrom 64 bit (включен показ полного адреса) сайт на https выглядит вот так - к "замочку" добавлено слово "Надежный".



HTTPS (англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP, для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.

HTTPS не является отдельным протоколом. Это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS. Он обеспечивает защиту от атак, основанных на прослушивании сетевого соединения — от снифферских атак и атак типа man-in-the-middle, при условии, что будут использоваться шифрующие средства и сертификат сервера проверен и ему доверяют.

По умолчанию HTTPS URL использует 443 TCP-порт (для незащищённого HTTP — 80). Чтобы подготовить веб-сервер для обработки https-соединений, администратор должен получить и установить в систему сертификат для этого веб-сервера. Сертификат состоит из 2 частей (2 ключей) — public и private. Public-часть сертификата используется для зашифровывания трафика от клиента к серверу в защищённом соединении, private-часть — для расшифровывания полученного от клиента зашифрованного трафика на сервере. После того как пара ключей приватный/публичный сгенерированы, на основе публичного ключа формируется запрос на сертификат в Центр сертификации, в ответ на который ЦС высылает подписанный сертификат. ЦС при подписании проверяет клиента, что позволяет ему гарантировать, что держатель сертификата является тем, за кого себя выдаёт (обычно это платная услуга).

Существует возможность создать такой сертификат, не обращаясь в ЦС. Такие сертификаты могут быть созданы для серверов, работающих под Unix, с помощью таких утилит, как ssl-ca от OpenSSL или gensslcert от SuSE. Подписываются такие сертификаты этим же сертификатом и называются самоподписанными (self-signed). Без проверки сертификата каким-то другим способом (например, звонок владельцу и проверка контрольной суммы сертификата) такое использование HTTPS подвержено атаке man-in-the-middle.

Традиционно на одном IP-адресе может работать только один HTTPS сайт. Для работы нескольких HTTPS-сайтов с различными сертификатами применяется расширение TLS под названием Server Name Indication (SNI).

Server Name Indication (SNI) — расширение компьютерного протокола TLS, которое позволяет клиентам сообщать имя хоста, с которым он желает соединиться во время процесса "рукопожатия". Это позволяет серверу предоставлять несколько сертификатов на одном IP-адресе и TCP-порту, и, следовательно, позволяет работать нескольким безопасным (HTTPS) сайтам (или другим сервисам поверх TLS) на одном IP-адресе без использования одного и того же сертификата на всех сайтах.

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

В первую очередь осуществляется переадресация сайта на защищенный протокол HTTPS. Переадресация с протокола HTTP на протокол HTTPS реализуется добавлением в файл .htaccess следующих директив:

RewriteEngine on
RewriteCond %{HTTP:HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://yourdomain.com/$1 [R=301,L]
SetEnvIf X-Forwarded-Proto https HTTPS=on

где "yourdomain.com" - имя домена, для которого используется сертификат.

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

Проверить страницы сайта можно с помощью следующего сервиса.

При наличии элементов, доступных только по протоколу HTTP, ссылки на них меняются на относительные (к примеру, вместо http://yourdomain.com/content/pic.jpg в коде страницы ссылка должна иметь вид /content/pic.jpg), либо явно указывается использование протокола HTTPS (в таком случае ссылка будет иметь вид https://yourdomain.com/content/pic.jpg").

Также меняются ссылки для элементов, загружаемых с внешних ресурсов. Например, если на сайте используется скрипт, доступный по адресу http://externaldomain.us/scripts/ad.js, эта ссылка должна быть изменена на //externaldomain.us/scripts/ad.js или https://externaldomain.us/scripts/ad.js. Обратите внимание, что сайт, на котором расположен элемент, также должен иметь валидный SSL-сертификат.

НАСТРОЙКА ИЗВЕСТНЫХ CMS ДЛЯ РАБОТЫ ПО HTTPS

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

Joomla!

В конфигурационном файле (configuration.php) строка: public $live_site =''"; заменяется на следующую: public $live_site = 'https://www.yourdomain.com'; где "yourdomain.com" - имя домена. Также вместо строки public $force_ssl = '0'; используется: public $force_ssl = '1';

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

Wordpress

В административной панели Wordpress производится смена протокола в адресе сайта. Для этого в разделе "Настройки" > "Общие", в полях "Адрес WordPress" и "Адрес сайта" протокол "http" меняется на "https". В конфигурационном файле (wp-config.php) добавляется следующая строка: define('FORCE_SSL_ADMIN', true);

Bitrix

Работа сайта включается в административной панели сайта с использованием безопасного соединения. Сделать это можно следующим образом: Настройки > Управление масштабированием > Панель управления > Глобальные действия > Включить https.

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

Резюме.

Для перевода сайта на защищенный протокол https надо:

- купить у хостера выделенный IP-адрес для сайта
- купить/получить сертификаты SSL
- на хостинге купить/включить дополнительные услуги, что бы все это заработало
- внести изменения в файл .htaccess
- внести изменения в файлы CMS
- изменить настройки CMS
- проверить все страницы сайта на старые адреса с http (кто-нибудь мог внести руками при разработке сайта)

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



  • Безопасность (745)

    Что означает безопасность сайта?Это может быть:1. Что-то нехорошее сделали злоумышленники с Вашим сайтом (заход внутрь):- изменили код- захватили контроль- внедрили вирусы- добавили рекламных страниц- сайт стал ботом и рассылает спам- утащили данные пользователей- использование Вашего сайта для...

  • Хакерские атаки (693)

  • Защита сайта (648)

  • Как включить https? (306)

    Существуют два основных протокола взаимодействия сайта с пользователемhttp - трафик между ПК пользователя и хостингом не шифруетсяhttps - трафик между ПК пользователя и хостингом шифруется (т.е. например, Ваш провайдер не сможет увидеть, какая информация идет с сайта / на сайт)Более того, в...

  • Как проверить сайт на вирусы? (119)

    Для чего это надо? Что быть уверенным, что это Ваш сайт :) Фактически векторы атаки разные и там могут быть не только вирусы:- добавлена переадресация на чужой сайт - воруют Ваш трафик- переадресация на сайт с троянами - используют Ваш сайт для создания ботнета- Ваш сайт уже является частью...