HTTPS

HTTPSHTTPS (от англ. "HyperText Transfer Protocol Secure" — "защищённый протокол передачи гипертекста") — надстройка над стандартным протоколом передачи гипертекста (HTTP), которая используется для шифрования передаваемых пользователем данных с целью предотвращения их перехвата. В качестве инструментов шифрования выступают транспортные протоколы SSL/TLS (от англ. "Secure Sockets Layer" — "уровень защищённых сокетов" / "Transport Layer Security" — "безопасность транспортного уровня").

При переходе на протокол HTTPS Ваш сайт начнёт принимать и передавать все пользовательские данные в виде хэша, закодированного по одному из алгоритмов (обычно MD5 или SHA) через 443-й TCP-порт (вместо стандартного 80-го). Чтобы получить возможность шифровать трафик владелец сайта должен установить на сервере специальный сертификат безопасности (SSL-сертификат), состоящий из двух ключей (приватного и публичного).

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

Бесплатный SSL-сертификат

HTTPS Бесплатный SSL-сертификат
Язык:Русский
Формат:
Обновлено:2017-03-18
Автор:





Бесплатный SSL-сертификат

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

Ещё на заре массового распространения Интернета (а конкретно в 1994 году) разработчики самого передового на тот момент веб-браузера Netscape Navigator создали механизм обмена данными между клиентом и сервером в зашифрованном виде на базе обычного протокола HTTP. Достигалось это за счёт использования дополнительного транспортного уровня SSL/TLS.

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

Однако, в 2016 году поисковый гигант Google внезапно объявил, что в своей выдаче он будет ранжировать защищённые сайты выше. А с начала 2017 вообще заявил, что веб-ресурсы без HTTPS будет помечать как неблагонадёжные! С этого и началась вся кутерьма с массовым переводом сайтов на защищённый протокол...

Недавно и мы получили "письмо счастья" от Гугла и решили наконец-то перевести BestFREE.ru на HTTPS. А заодно поделиться с нашими читателями, у которых есть свои сайты, тем, как сделать это бесплатно.

Зачем нужен HTTPS

Собственно, зачем нужен HTTPS, думаю, Вам уже понятно – чтобы организовать зашифрованный обмен данными между Вашим сервером и пользователем. Однако, что именно даст Вам такое шифрование?

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

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

Правильный и неправильный HTTPS

Больше практической пользы для большинства сайтов в защищённом протоколе нет :) Но, раз того требует "великий и ужасный" Гугл, то приходится соответствовать, дабы не схлопотать санкции...


Что такое SSL-сертификат

Технической базой для работы протокола HTTPS является использование средств SSL/TLS (сокр. "Secure Sockets Layer" — "уровень защищённых сокетов" / "Transport Layer Security" — "безопасность транспортного уровня"). На первый взгляд неясная игра слов кроет за собой более понятную сущность под названием SSL-сертификат.

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

SSL-сертификат

Сертификаты бывают нескольких видов и от их вида зависит сфера их применения:

Вид SSL-сертификата Особенности использования
Самоподписной (self-signed) Может быть создан бесплатно при помощи популярных систем управления хостингом (ISPmanager, Cpanel, Directadmin) и применён для реализации доступа к сайту по протоколу HTTPS, но не проходит проверку безопасности в браузере (красный замок с предупреждением).
С проверкой домена (упрощённая проверка) (Domain Validation — DV) Базовый тип валидного сертификата, который может быть выдан бесплатно некоторыми центрами сертификации. Как правило, выдаётся автоматически (в течении одного дня) и позволяет работать по протоколу HTTPS тому домену, на который он зарегистрирован (не распространяется на поддомены, если они есть).
С проверкой организации (стандартная проверка) (Organization Validation — OV) Сертификат, который выдаётся только юридическим лицам. На его выпуск уходит 3 – 10 дней, за которые центр сертификации вручную проверяет наличие Вашей организации и её права на использование регистрируемого домена. По принципу работы идентичен сертификату DV, но не выпускается бесплатно ни одним из современных центров сертификации.
С расширенной проверкой (Extended Validation — EV) Самый трастовый на данный момент вид SSL-сертификатов. Чтобы получить такой сертификат владелец домена должен быть официально зарегистрирован как предприниматель или представитель юридического лица. Центр сертификации проводит все проверки по наличию прав на использование домена и в результате выдаёт сертификат, который в адресной строке браузера перед самим адресом сайта создаёт так называемую "зелёную строку" (green bar), в которой отображается название центра сертификации, подтверждающего подлинность веб-ресурса и его защищённость.

Кроме того, существует ещё и класификация по типам SSL-сертификатов:

Тип SSL-сертификата Особенности использования
Стандартный SSL-сертификат Самый распространённый тип. Подтверждает подлинность конкретного доменного имени (с любым видом проверки владельца).
Wildcard-сертификат Тип сертификата, который может подтверждать подлинность всех поддоменов сайта (например, не только "mysite.ru", но и "forum.musite.ru", "admin.mysite.ru", "en.mysite.ru" и т.п.).
SAN-сертификат (мультидоменный) (сокр. от "Subject Alternative Name" – "альтернативное имя субъекта") Позволяет подтвердить подлинность целой группы сайтов, размещённых на одном сервере. Стандартно SAN-сертификат выдаётся на 5 доменных имён, но может быть расширен, с каждым разом увеличивая количество трастовых доменов на 5.
Сертификат с поддержкой IDN (сокр. от "Internationalized Domain Names" – "международные доменные имена") Данный тип сертификата отличается от стандартного тем, что может удостоверять доменные имена, которые используют нестандартные наборы символов. Например, символы Юникода или кириллицы ("мойсайт.рус"). За дополнительную плату может быть оформлен как Wildcard.
SGC-сертификат (сокр. от "Server-Gated Cryptography" – "серверная криптография") Один из устаревших типов SSL-сертификатов, который наряду с современным 128-битным шифрованием поддерживает устаревшие 40 и 56-битные алгоритмы и обеспечивает их взаимосовместимость. Используются данные сертификаты, как правило, только в корпорациях с устаревшим компьютерным парком, который использует устаревшие же браузеры.

Средняя цена стандартного SSL-сертификата, который выпускается практически мгновенно и подойдёт для большинства сайтов, стартует в районе $20/год. Сумма не такая уж и большая, но можно обойтись и вовсе без вложений! О том как это сделать, читаем далее.

Бесплатный SSL-сертификат

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

  • Comodo Free SSL Certificate (90 дней с бесплатным ручным перевыпуском);
  • Let’s Encrypt (90 дней с бесплатным автоматическим (при отсутствии shell-доступа к серверу – ручным) перевыпуском);
  • StartSSL FREE (3 года с бесплатным ручным перевыпуском);
  • Cloudflare One-Click SSL (неограничено на время пользования сервисом).

Практически у всех сертификатов имеются свои плюсы и минусы. Так, например, Comodo Free SSL Certificate на сегодняшний момент является одним из самых трастовых. Однако, его нужно вручную пересоздавать каждые три месяца. В то же время Let’s Encrypt, при том же сроке действия, предоставляет возможность бесплатного автоматического обновления сертификата...

Что самое интересное, ряд хостеров, которые заботятся о своих клиентах, с начала 2017 года автоматически активировали Let’s Encrypt на своих серверах. Тем самым они обеспечили фактически вечную самообновляющуюся систему получения сертификатов для сайтов, которые у них обслуживаются. Поэтому у тех, кому повезло, сейчас уже имеется доступ к сайту по HTTPS. Это можно проверить, добавив перед адресом сайта явно указанный протокол HTTPS: "https://mysite.ru".

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

Ошибка HTTPS

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

Наконец-то мы подошли к одному из ключевых практических моментов – получению бесплатного SSL-сертификата. Из соображений жадности и практичности я решил сразу заполучить сертификат на максимально возможный срок. Вначале я склонялся к активации Let’s Encrypt...

Получить вручную сертификат не составило особого труда. Однако, автоматизировать его перевыпуск, увы, не вышло. Как выяснилось в процессе переписки с техподдержкой, для этого требуется более новая версия панели управления сайтом (не ниже ISPManager 5), аренда которой стоит дополнительных пару-тройку баксов в месяц.

Отпал также вариант со StartSSL (все сертификаты, выданные с начала этого года Гугл не считает трастовыми) и с CloudFlare (ведь он подразумевает подключение их CDN). В итоге остался только Comodo (пусть и перевыпускать его нужно каждые 90 дней, но зато кредит доверия к нему самый высокий у всех поисковиков)... На его примере и рассмотрим все этапы получения SSL-сертификата.

Бесплатный SSL-сертификат от Comodo

Переходим на страницу получения бесплатного сертификата и нажимаем большую оранжевую кнопку с надписью "Free Trial SSL". Откроется следующая форма пошаговой регистрации нового сертификата:

Бесплатный сертификат от Comodo

На первом этапе нам нужно вставить в специальное поле CSR-запрос (сокр. "Certificate Signing Request" – "запрос на сертификат подписи") на генерацию сертификата. Создать его можно различными способами, но самым простым, на мой взгляд, является его генерация при помощи специальных онлайн-сервисов, вроде Emaro-SSL.ru. Заполните форму как на скриншоте ниже и нажмите кнопку "Сгенерировать", чтобы получить текст CSR-запроса и Вашего приватного ключа:

Генерация CSR-запроса онлайн

После генерации обязательно копируем содержимое запроса и приватного ключа, и сохраняем всё в отдельный текстовый файл (он нам ещё пригодится). Затем содержимое запроса вставляем в поле ввода на Comodo, выбираем тип своего сервера (у меня Apache, но часто бывает и NGINX, поэтому здесь ориентируетесь на данные Вашего хостинга), отключаем галочку "Comodo Newsletter" (чтобы не получать лишнюю рассылку) и жмём "Next". Если всё сделано верно, нас перенаправит ко второму шагу генерации сертификата:

Валидация домена

На этом шаге нам нужно будет подтвердить свои права на доступ к серверу. Проще всего это сделать при помощи электронной почты. Выберите один из предложенных почтовых адресов на Вашем домене (я выбрал webmaster@bestfree.ru) и нажмите кнопку "Continue". На выбранный Вами E-Mail придёт письмо с проверочным кодом, а в браузере мы перейдём к следующему шагу:

Информация о держателе SSL-сертификата

Здесь нам предложат заполнить форму с информацией о владельце домена, для которого выпускается SSL-сертификат. Необязательно заполнять все поля. Достаточно только те, которые выделены красным. К тому же, часть полей уже будет заполнена данными из CSR-запроса. После заполнения снова жмём "Next" для перехода к следующему этапу. Здесь нам нужно всего лишь принять лицензионное соглашение, отметив галочку "I ACCEPT" и нажав кнопку "Continue to Payment Information", чтобы перейти к финальному экрану:

Принятие лицензионного соглашения

Здесь нам сообщат, что заказ успешно обработан, однако, для получения сертификата нужно пройти валидацию домена. Для этого идём на указанную Вами на втором шаге почту и ищем письмо с проверочным кодом. Копируем код и вставляем его в поле, которое откроется после нажатия на красную кнопку "Action Required" в секции "Domain Control Validation". Подтверждаем ввод нажатием на кнопку "Next" и получаем на почту архив с нашим SSL-сертификатом.

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

Итак, у нас уже имеется на руках готовый SSL-сертификат и первым делом его нужно установить на наш сервер. В принципе, если в Вашей техподдержке работают нормальные люди, можно попросить их помочь сделать все нужные настройки. Однако, это неспортивно :) Да и особо сложного ничего в этом нет. Поэтому рассмотрим как всё реализовать в панели управления сайтом ISPManager.

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

Как я уже сказал, у нас на сервере для управления сайтом стоит панель ISPManager. Рассмотрим нужные настройки на её примере. Для этого войдём в неё и перейдём в раздел "SSL сертификаты". У меня здесь есть парочка созданных ранее сертификатов, но у Вас может быть пусто. Чтобы что-то добавить нам нужно нажать кнопку "Создать" и заполнить форму как на скриншоте ниже:

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

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

  1. Приватный ключ. Его мы получили на этапе генерации CSR-запроса и он у нас уже должен быть в текстовом файле, куда мы сохранили результаты работы онлайн-генератора. От остальных хешей отличается наличием метки "-----BEGIN PRIVATE KEY-----".
  2. Сертификат. Это, собственно, содержимое сертификата, выданного Вам Comodo (или иным центром сертификации). Чтобы его найти, откройте скачанный Вами архив с сертификатами и внутри обнаружите два файла. Тот, в имени которого будет фигурировать название Вашего сайта, и есть нужный (у меня это "bestfree_ru.crt"). Откройте его любым текстовым редактором и скопируйте его содержимое во второе поле ввода нашей формы на сервере.
  3. Пароль. Задайте любой пароль (будет использован для шифрования).
  4. Цепочка сертификатов. Второй файл в архиве, в котором фигурирует слово "bundle" (в нашем случае называется "bestfree_ru.ca-bundle"). Как и в случае с основным сертификатом, открываем файл текстовым редактором и копируем его содержимое в последнее поле формы.

После заполнения всех полей жмём кнопку "OK" и наш сертификат добавлен.

Активация шифрования для домена

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

Первым делом идём в раздел "WWW домены" и выделяем в списке нужный нам сайт. Вызываем окно изменения параметров (двойным кликом или кнопкой "Изменить"), в нём отмечаем галочкой опцию "SSL" и в появившемся выпадающем списке выбираем добавленный нами сертификат. Жмём "OK" и шифрование активировано!

Подключение SSL-сертификата к домену в ISPManager

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

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

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

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

Суть действий в том, чтобы везде заменить тип протокола со старого HTTP на новый HTTPS. Сделать это можно как явным указанием протокола, так и способом создания относительных ссылок. В случае, если Вы решите делать относительные ссылки, то внутренние лучше делать вообще без указания доменного имени (например, вместо "https://mysite.ru/mycategory/page.php" лучше сделать "mycategory/page.php"), а внешние (например, скрипты метрик и т.п.) без указания протокола (вместо "http://api.google.com/somescript.js" – "//api.google.com/somescript.js").

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

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

Первым делом следует немного перенастроить файлы robots.txt и .htaccess. В первом из них нужно указать для поисковых систем новое "зеркало" сайта с протоколом HTTPS. Для этого достаточно просто изменить тип протокола в директиве Host:

Host: https://mysite.ru

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

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{REQUEST_FILENAME} !robots\.txt

RewriteCond %{REQUEST_FILENAME} !sitemap\.xml

RewriteRule ^(.*)$ https://mysite.ru/$1 [R=301,L]

Редирект рекомендуют делать для большинства файлов и страниц, но есть и такие, которые должны быть доступны по любым ссылкам (и с шифрованием, и без). К таким файлам относятся уже упомянутый нами robots.txt и sitemap.xml. Чтобы отключить редирект для них, можно прописать проверку на соответствие запрашиваемого файла, как это сделано в коде выше (за исключение отвечает "!" перед именем исключаемого файла).

После того, как все правки на сайте сделаны, доступ по зашифрованному каналу работает без ошибок и Ваш веб-ресурс спокойно открывает все страницы по HTTPS, настало время для "финального аккорда" – указания новых адресов сайта в метриках Яндекса, Гугла, ЛивИнтернета и т.п.

В каждой системе это делается по-своему. Например, в Яндекс.Вебмастере Вам нужно перейти в раздел "Индексирование" – "Переезд сайта" и активировать галочку "Добавить HTTPS". В Search Console Гугла достаточно просто изменить адрес сайта вручную в разделе "Параметры URL" (вообще, Google берёт все параметры из .htaccess, поэтому, если у Вас прописаны редиректы, то, возможно, он и сам без всяких правок правильно переиндексирует Ваш сайт). В LiveInternet же аналогичные ручные правки можно сделать в "Настройках".

Включение HTTPS в Яндекс.Вебмастер

Выводы

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

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

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

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.







Полезный совет:



Система проверки ошибок от Mistakes.ru