×
Закрытие
×

Дополнительные материалы бесплатно предоставляются только зарегистрированным пользователям.

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

Для тех кто не зарегистрирован, можно это сделать на вкладке Регистрация.

  • Создаем сайт для работы в Интернете

    1. Причины создания пошаговой инструкции по разработке самописного сайта
    2. Тема создаваемого сайта
    3. В чем будет заключаться монетизация
    4. Функционал
    5. Этапы создания
    6. Текущее состояние создаваемого сайта

    Здравствуйте уважаемый посетитель!

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

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

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

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

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

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

Самописный сайт своими руками!

Текущее состояние создаваемого сайта

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

Где в дополнительных материалах можно бесплатно скачать исходные файлы сайта с таблицами MySQL.

Вы здесь: Главная → Сборник статей → Авторизация  → Устанавливаем SSL-сертификат и переходим на https


Автор: / Дата:

Устанавливаем SSL-сертификат и переходим на https

Здравствуйте уважаемый посетитель!

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

Но перед тем как это сделать, выполним определенные мероприятия. Такие, как:

получение SSL/TLS-сертификата и перевод сайта с HTTP на HTTPS. Причем посмотрим, как можно получить сертификат SSL бесплатно.

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

Содержание


  • Зачем нужен протокол HTTPS
  • Виды SSL сертификатов
  • Платить ли за SSL сертификат
  • Включаем режим SSL и получаем бесплатный сертификат Let’s Encrypt
  • Переводим сайт c протокола HTTP на HTTPS
  • Проверяем SSL-сертификат и работу сайта с протоколом HTTPS
  • Обеспечиваем доступ к сессионной cookie с использованием защищенного протокола HTTPS
  • Исходные файлы сайта

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


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

В настоящее время в основном применяются TLS (Transport Layer Security) сертификаты, представляющие усовершенствованную модификацию устаревшего стандарта SSL. При этом в названии сертификата более часто употребляется первоначальная аббревиату́ра SSL.

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

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

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

Отметка незащищенного соединения в браузере Opera

Рис.1 Отметка незащищенного соединения в браузере Opera

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

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

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


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

Сертификаты по доменам:

  • Unified Communications / SAN - сертификат, позволяющий защитить разные домены, принадлежащие одной компании.
  • Wildcard SSL - сертификат действителен как для основного домена, так и для его поддоменов.
  • Single Certificate - тип сертификата, который действителен только для одного домена, указанного при оформлении заказа.

Сертификаты по способу проверки:

  • Domain Validation (DV) осуществляет проверку по домену. Иными словами, он гарантирует, что пользователь будет совершать онлайн операции (покупки товара, оплаты и т.п) именно на том сайте, на котором он выполнял предыдущие запросы. Однако Domain Validation считается надёжным лишь условно ввиду отсутствия достоверных сведений о владельце сайта. Поэтому такой сертификат подходит для тех ресурсов, у которых строгая гарантия безопасности не является ключевым фактором.
  • Organization Validation (OV) в отличие от предыдущего типа осуществляет валидацию не только домена, но и организации, которая владеет сайтом. Что обеспечивает более высокую безопасность при использовании такого сертификата.
  • Extended Validation (EV) осуществляет расширенную валидацию домена и организации. Такая серьезная проверка обеспечивает высокий уровень доверия не только со стороны пользователей, но и других площадок. Extended Validation будет оптимальным выбором для сайтов, которые нуждаются в строгой конфиденциальности — например, имеют дело с крупными финансовыми транзакциями. При этом расширенная проверка является не разовой, а периодической: такой подход позволяет защитить пользователей от подмены данных даже со стороны недобросовестного владельца сайта.
Виды сертификатов SSL

Рис.2 Виды сертификатов SSL

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

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

Предупреждение об угрозе безопасности

Рис.3 Предупреждение об угрозе безопасности

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

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

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

Платить ли за SSL сертификат


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

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

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

Let’s Encrypt

Речь идет о SSL-сертификатах Let’s Encrypt начального уровня с проверкой домена. При этом несмотря на то, что такие сертификаты бесплатны, уровень шифрования у них не ниже, чем у платных. Let’s Encrypt придерживается самых высоких стандартов шифрования и предлагает сертификаты высокого уровня надежности.

Хотя нужно отметить и некоторые его недостатки, например: сертификат Let’s Encrypt выпускается всего на 90 дней, а не на 1 год, как для платных вариантов. Что требует постоянное отслеживание срока его окончания с последующим пере выпуском. Но эта проблема вполне решаема с помощью механизмов автоматического его продления.

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

скриншот 45

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

скриншот 46

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

Включаем режим SSL и получаем бесплатный сертификат Let’s Encrypt


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

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

В настоящее время существует большое количество различных хостеров, предоставляющих для своих клиентов возможность бесплатного получения сертификатов Let's Encrypt. Но в данном случае мы рассмотрим это на том хостинге, на котором ранее разместили в Интернете тестовый сайт. Речь идет о сравнительно недорогом, но достаточно качественном хостинге Хостия.

скриншот 47

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

Где в первую очередь следует включить режим SSL. Для этого сначала нужно в разделе "Управление доменами" открыть вкладку "Управление SSL", из которой затем перейти на страницу настроек домена, кликнув по ссылке "здесь", как показано на скриншоте.

Открытие страницы настроек домена

Рис.5 Открытие страницы настроек домена

А затем на открывшейся странице выбрать пункт "Защита SSL" и включить SSL нажатием на кнопку "Изменить".

Включение SSL

Рис.6 Включение SSL

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

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

Бесплатное подключение SSL сертификата

Рис.7 Бесплатное подключение SSL сертификата

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

Сообщение об успешном создании сертификата

Рис.8 Сообщение об успешном создании сертификата

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

Следует отметить, что в дальнейшем нет необходимости отслеживать окончания действия полученного сертификата, так как он будет автоматически продлеваться по истечении 60-ти дней. Оставшееся время до его продления можно посмотреть, если при созданном сертификате снова перейти на вкладку "Управление SSL".

Определение количества дней до автоматического продления сертификата

Рис.9 Определение количества дней до автоматического продления сертификата

Как видно, до очередного автоматического продления на данный момент осталось 59 дней. А кроме того, здесь же мы сможем увидеть подписанный сертификат, начинающийся с BEGIN CERTIFICATE и оканчивающийся END CERTIFICATE, а также секретный ключ, ограничивающийся BEGIN RSA PRIVATE KEY и END RSA PRIVATE KEY.

Переводим сайт c протокола HTTP на HTTPS


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

  • Сделать автоматический редирект сайта на https://.
  • Заменить все адреса, используемые в технических файлах типа robots.txt и sitemap.xml на безопасные HTTPS.
  • Заменить все имеющиеся адреса на страницах сайта с http:// на https://.
  • Проверить наличие на сайте абсолютных ссылок на http://, и если такие найдутся исправить на https://.
  • Сообщить поисковым роботам о том, что сайт стал доступен по новому протоколу, добавив домен с версией https:// в список своих сайтов в Яндекс.Вебмастер и в Google Search Console. (Данную процедуру следует выполнять только после успешной проверки работы сайта с протоколом HTTPS).

По первому пункту - установку автоматического редиректа на https:// можно сделать добавлением в файл .htaccess следующего кода:

  1. RewriteEngine On

  2. RewriteCond %{HTTPS} off

  3. RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Рис.10 Установка автоматического редиректа на https://

Где в первой строке директива RewriteEngine выполняет активацию модуля mod_rewrit (требуется, если модуль ранее не был активирован), а далее - задается условие RewriteCond (поз.2) для срабатывания следующего за ними правила RewriteRule (поз.3).

И таким образом при получении сервером запроса с адресом вида http:// будет выполняться постоянное перенаправление на https://.

Что касается пунктов 2÷4, то тут все ясно. Просто надо проверить все указанные адреса и ссылки и привести из в должное состояние.

А вот для того, сообщить поисковым роботам о том, что сайт стал доступен по HTTPS-протоколу, необходимо добавить через соответствующие инструменты поисковых систем новую его версию с https://. О том, как добавить ресурс в Яндекс.Вебмастер, можно посмотреть здесь.

Что касается Google, то это делается через инструмент Google Search Console, где в начале для этого следует кликнуть по полю с именем домена, как показано на скриншоте.

скриншот 53

Добавление ресурса в Google Search Console

Рис.11 Добавление ресурса в Google Search Console

А далее в открывшемся окне перейти на соответствующую страницу, на которой затем следует добавить сайт с HTTPS-версией протокола. Все операции по добавлению нового ресурса в Google Search Console выполняются аналогично тому, как мы это делали ранее в Яндекс.Вебмастер. Поэтому подробно рассматривать такие однотипные действия мы здесь не будем.

Однако, при оповещении поисковых систем Яндекс и Google о доступности сайта по протоколу HTTPS есть и некоторые отличия. Так для Яндекса требуется дополнительно подать заявку на переиндексацию и переопределение главного зеркала сайта. Для этого необходимо в разделе "Индексирование" Яндекс.Вебмастера открыть вкладку "Переезд сайта", на которой затем отметить пункт "Добавить HTTPS" и сохранить это изменение, как показано на следующем скриншоте.

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

Рис.12 Переопределение главного зеркала сайта в Яндекс.Вебмастере

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

Информационное сообщение об обработке заявки на переезд сайта

Рис.13 Информационное сообщение об обработке заявки на переезд сайта

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

Проверяем SSL-сертификат и работу сайта с протоколом HTTPS


Таким образом мы сделали все необходимые действия, а именно, установили SSL-сертификат и выполнили перевод сайта c протокола HTTP на HTTPS. А теперь проверим, все ли у нас получилось.

И сначала проверим работу сайта с HTTPS. Для этого введем в адресной строке запрос http://avtobezugona.ru и убедимся, что при его обработке произойдет редирект на https://avtobezugona.ru с последующим открытием страницы в режиме защищенного соединения.

Открытие страницы сайта в режиме защищенного соединения

Рис.14 Открытие страницы сайта в режиме защищенного соединения

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

А теперь проверим полученный сертификат. Для этого воспользуемся одним из сервисов digicert, с помощью которого можно сделать проверку и диагностику установленного сертификата SSL. Где достаточно в соответствующем поле ввести домен и запустить диагностику. Ниже показан результат проверки установленного нами сертификата с помощью этого сервиса.

скриншот 52

Результат проверки установленного сертификата SSL

Рис.15 Результат проверки установленного сертификата SSL

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

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

Обеспечиваем доступ к сессионной cookie с использованием защищенного протокола HTTPS


Помимо ранее рассмотренных методов повышения уровня безопасности сессии, существует еще один способ, который обеспечивает передачу сессионной cookie через защищенное соединение. И тем самым защищает ее от кражи на этапе соединения между сервером и браузером.

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

  1. # Настройки параметров сессий

  2. php_value session.name SESSID

  3. php_flag session.cookie_httponly 1

  4. php_value session.gc_maxlifetime 900

  5. php_value session.cookie_lifetime 0

  6. php_value session.save_path tmp/

  7. php_flag session.gc_probability 0

  8. php_flag session.cookie_secure 1

Рис.16 Добавление директивы session.cookie_secure в файл .htaccess

В результате, изменив таким образом текущие настройки PHP мы сделали так, что сессионная cookie будет передаваться только через защищенное соединение. Чем и обеспечили более высокий уровень сессии.


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

Исходные файлы сайта


Знак папкиИсходные файлы сайта с обновлениями, которые были сделаны в данной статье, можно скачать из прилагаемых дополнительных материалов:

  • Файлы каталога www
  • Таблицы базы данных MySQL

При этом, временно сформированные в данной статье PHP-скрипты, размещенные в файле "main.php" папки "articles" корневого каталога, закомментированы. Для проверки рассмотренных здесь примеров, следует раскомментировать соответствующие фрагменты кода.

Дополнительные материалы бесплатно предоставляются только зарегистрированным пользователям.

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

Для тех кто не зарегистрирован, можно это сделать на вкладке Регистрация.

С уважением, Николай Гришин


Комментарии


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

Буду Вам за это очень признателен!

comments powered by HyperComments