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

Аббревиатура HTTPS расшифровывается как Hypertext Transfer Protocol Secure, а переводится примерно следующим образом: «безопасный гипертекстовый протокол передачи данных». HTTPS появился в 2000-м году благодаря стараниям компании Netscape Communications и стал применяться во всемирной паутине очень широко. Следовательно, мы просто обязаны уделить ему внимание.

Суть простыми словами

На самом деле HTTPS является не отдельным, совершенно новым протоколом, а всего лишь расширенным HTTP. То есть, парни из Netscape Communications взяли уже существующий протокол HTTP и прикрутили к нему технологию шифрования данных SSL (Secure Sockets Layer) . Ну и к названию одну букву добавили, а также назначили для установки соединений вместо 80-го программного порта по умолчанию 443-й.

Владелец ресурса во всемирной паутине отправляется в компанию-регистратор (например, VeriSign или Comodo) и приобретает специальный сертификат , позволяющий клиентам устанавливать защищённое соединение с веб-сервером. Цифровая подпись регистратора выступает в качестве гарантии того, что сайт является настоящим, не подделанным, достойным доверия.

Встречаются и самодельные сертификаты (для серверов под управлением Unix-подобных ОС), «самоподписанные», созданные с помощью софта gensslcert от компании SuSE или ssl-ca от проекта OpenSSL. Защищённое соединение устанавливается, но надёжных гарантий подлинности нет.

Есть также разновидность сертификатов, которые выдаются сервером и хранятся в браузерах на компьютерах пользователей, дабы при подключении к веб-ресурсу автоматически устанавливать защищённое соединение и авторизоваться. Так действует, к примеру, сервис платёжной системы Webmoney под названием WM Keeper Light.

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

Вы можете открыть Менеджер сертификатов в настройках, допустим, Mozilla Firefox, отыскать список регистраторов, отредактировать его, посмотреть контрольные суммы. А также импортировать файл с сертификатом, который вам выдан (тем же Webmoney Keeper Light) или экспортировать уже присутствующий, создав резервную копию.

Однако вернёмся к нашим серверам. «Ух ты!» - радостно говорит браузер, - «доступно защищённое соединение! И сертификат подлинный!» На что сервер отвечает: «А ты как думал! Это же сайт солидной конторы. Добро пожаловать! Сейчас назначу надёжный 128-битный ключ шифрования - и начинаем обмениваться данными!»

Собственно говоря, ключей два: Public , для шифрования идущего от клиента трафика, и Private , для расшифровки полученного. Клиенту заботиться не о чем. Разве что следить за предупреждениями, выдаваемыми браузером, не отозван ли сертификат, подлинная ли подпись, нет ли перенаправления на незашифрованную страницу, где опасно вводить какие-либо пароли.

Зачем это нужно

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

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

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

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

Практика

Касаемо электронной почты, к Gmail и Hotmail наконец-то присоединился Яндекс , включив в своём веб-интерфейсе протокол HTTPS по умолчанию. Настраивать вручную ничего не нужно.

В Gmail следует зайти в настройки и отметить опцию «Использовать только HTTPS». На всякий случай.

С Hotmail не всё так просто, доведётся залезть в дебри.

  1. Жмём «Параметры» справа вверху, рядом с именем пользователя.
  2. Выбираем «Другие параметры»
  3. Движемся в раздел «Дополнительные параметры конфиденциальности»
  4. «Перейти к параметрам HTTPS»
  5. Выбираем «Использовать протокол HTTPS автоматически»
  6. Ну и кнопку сохранения изменений не игнорируем, естественно.

При установке зашифрованного соединения адрес веб-страницы начинается не с «http://» а с «https://». Адресная строка может окрашиваться в иной цвет (например, в браузере SeaMonkey - в бледно-жёлтый). Или рядом с ней будет нарисован какой-нибудь символ вроде крохотного навесного замка. В общем, в разных браузерах индикация реализована по-разному. (В Firefox 9 с настройками по умолчанию - почему-то вообще никак.)

Заключение

Защищённый протокол HTTPS используется в таких социальных сетях и сервисах как Twitter, Blogger, Google+, Сайты Google, Wordpress.com, и это очень хорошо, потому что значительно снижает вероятность взлома учётной записи и рассылки спама от имени пользователя. Для банков и платёжных систем просто не может не быть зашифрованного соединения, иначе это никакой не банк и не система. Да и просто личная переписка останется приватной, если выбрать хорошую почтовую службу.

Предыдущие публикации:

Представим такую ситуацию. У вас есть сайт, расположенный на внешнем сервере. Вы, как администратор, выполняете на нем определенные действия, подключаясь под определенным логином и паролем. Вторая ситуация. Вы являетесь пользователем системы Web Money или аналогичной. Для выполнения действий с вашими кошельками вам необходимо подключиться к системе. Что может произойти во время таких подключений? Если кто-либо окажется между вашим компьютером и сервером, он сможет перехватить (sniffer) передаваемые вами и вам данные, выделить из них информацию, которая может дать доступ к вашему серверу или кошельку и выполнить действия, которые нанесут вам вред.

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

Для создания защищенных соединений разработано несколько протоколов

Защищенная связь в Интернете может быть реализована с помощью ряда протоколов, таких, как Secure Socket Layer (SSL), Secure HTTP (SHTTP) и Private Communications Technology (PCT) . Они обеспечивают защищенность каналов связи между Web-сервером и браузером и осуществляют идентификацию либо браузера, либо сервера. Реализаций защищенных протоколов несколько, но для того чтобы подавляющее число Web-браузеров могли работать с вашей системой, она все же должна поддерживать протокол SSL, как наиболее на сегодняшний день распространенный. Часто для его обозначения и выделения среди других используется аббревиатура HTTPS . Именно эта латинская буква «s» превращает обычный, не защищенный канал передачи данных в Интернете по протоколу HTTP, в засекреченный или защищенный.



Протокол SSL был представлен компанией Netscape Communications Corporation в 1994 году. Тогда была представлена вторая версия, в которой защищенность канала обеспечивалась поверх уровня транспортного протокола (например, TCP), а прикладные программы работали через SSL. Протокол SSL обеспечивает защиту данных посредством шифрования своих сообщений, а также проверку целостности сообщений и аутентификацию со стороны сервера и выборочно — со стороны клиента. Двумя годами позже была представлена третья версия этого протокола, в которой была расширена поддержка алгоритмов шифрования и обмена ключами.

Протокол SSL предоставляет "безопасный канал", который имеет три основных свойства:

  • Защищенность связи. После первоначального квитирования связи применяются средства шифрования и определяется секретный ключ. Для шифрования данных используются средства симметричной криптографии (например, DES, RC4 и т.д.).
  • Участник сеанса связи может быть идентифицирован и с помощью общих ключей, то есть средствами асимметричной криптографии (например, RSA, DSS и т.д.).
  • Надежность связи. Транспортные средства проводят проверку целостности сообщений с помощью зашифрованного кода целостности (MAC). Для вычисления кодов МАС используются безопасные хэш-функции (например, безопасный хэш-алгоритм (SHA), MD5 и т.д.).

Цель протокола SSL — обеспечение защищенности и надежности связи

Основная цель протокола SSL состоит в том, чтобы обеспечить защищенность и надежность связи между двумя подключенными друг к другу приложениями. Этот протокол состоит из двух уровней. Нижний уровень, который располагается поверх транспортного протокола (например, TCP), называется SSL Record Protocol . SSL Record Protocol используется для встраивания различных протоколов высокого уровня и обеспечивает базовый набор средств защиты и поддержку двух следующих сервисов для соединений SSL: конфиденциальность и целостность сообщений. Один из таких встроенных протоколов, SSL Handshake Protocol , позволяет серверу и клиенту идентифицировать друг друга и согласовывать алгоритм шифрования и криптографические ключи, прежде чем протокол приложения произведет обмен первыми битами данных. Одно из преимуществ SSL заключается в том, что он независим от протоколов приложений. Протокол высокого уровня может совершенно прозрачно располагаться поверх протокола SSL.

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

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

Алгоритм работы SSL построен на принципе публичных ключей. Этот принцип основан на использовании пары асимметричных ключей (публичном и приватном) для кодирования/ декодирования информации. Публичный ключ раздается всем желающим. И с его помощью шифруются необходимые данные, которые можно дешифровать только с помощью приватного ключа. Защищенность передаваемых данных, в конечном итоге, зависит от длины ключа. Если она небольшая, то информация может быть взломана, хотя для этого и потребуются достаточно большие вычислительные мощности.

Процесс "узнавания" состоит из нескольких фаз, что замедляет работу сервера

При установлении связи процесс инициализации начинает клиент, который отправляет серверу сообщение ClientHello , содержащее версию протокола, идентификатор сеанса, комплект шифров (cipher suite), метод сжатия и исходные случайные числа. Затем клиент ожидает от сервера сообщения ServerHello , которое содержит те же параметры, что и сообщение ClientHello, и Certificate , в котором передаётся открытый ECDH ключ сервера, подписанный цифровой подписью по алгоритму ECDSA. При необходимости может быть отправлено сообщение ServerKeyExchange (обмен ключами сервера) и CertificateRequest (запрос сертификата). Сообщением ServerDone сервер извещает о завершении фазы приветствия. После аутентификации сервера клиент вычисляет секретный ключ. Если сервер запросил сертификат, клиент отправляет сообщение Certificate или уведомление NoCertificate , если подходящий сертификат отсутствует. Затем он передаёт свой открытый ключ в сообщении ClientKeyExchange . В завершение данного этапа клиент может отправить сообщение CertificateVerify , чтобы обеспечить средства прямой верификации сертификата клиента.

После этого, производится еще ряд промежуточных обменных операций, в процессе которых, производится окончательное уточнение выбранного алгоритма шифрования, ключей и секретов, и далее, сервер посылает клиенту некое финальное сообщение. Только после того, как сервер идентифицирует пользователя, он предоставляет клиенту доступ к ресурсу, заданному соответствующим универсальным идентификатором (Uniform Resource Locator, URL). Аутентификация с применением сертификата клиента позволяет серверу идентифицировать индивидуальных пользователей и предоставлять им заданные администратором права доступа. Так, Internet Information Server поддерживает аутентификацию клиентов в сеансе защищенного канала посредством сертификатов с открытым ключом.

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

  • Internet Explorer 5.01 и выше
  • Opera от 5.0 и выше
  • Netscape Navigator от 4.6 и выше
Они должны быть настроены соответствующим образом, то есть должна быть включена поддержка протоколов SSL2 и SSL3.

Где можно увидеть применение протоколов SSL? Наверняка, многие из вас пользуются теми или иными системами электронных денег — Яндекс.Деньги, Web Money, иные. При подключении к серверам выполняется проверка вашего сертификата, после чего устанавливается (если сертификат действителен) защищенное соединение. Аналогично выполняется подключение к серверам электронных бирж, брокерских площадок, ряда других сервисов.

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

Защитите свой сайт и его пользователей

Что такое HTTPS?

HTTPS (Hypertext Transport Protocol Secure) – это протокол, который обеспечивает безопасность и конфиденциальность при обмене информацией между сайтом и устройством пользователя. Посетители сайта рассчитывают, что указанные ими данные не попадут в руки мошенников. Чтобы защитить данные, которые оставляют посетители на вашем сайте, начните применять протокол HTTPS (независимо от того, какой на сайте контент).

На веб-страницах, использующих HTTPS, неприкосновенность информации обеспечивается с помощью протокола TLS (Transport Layer Security ‒ безопасность на транспортном уровне), который предусматривает три основных уровня защиты:

  1. Шифрование передаваемых данных во избежание их перехвата. Благодаря этому злоумышленники не смогут узнать, какой информацией обмениваются посетители сайта, а также отследить их действия на других страницах или получить доступ к их данным.
  2. Сохранность данных . Любое изменение или искажение передаваемых данных будет зафиксировано независимо от того, было оно сделано намеренно или нет.
  3. Аутентификация гарантирует, что посетители попадут именно на тот сайт, который им нужен, и защищает от атаки посредника . Пользователи больше доверяют таким сайтам, а это открывает дополнительные возможности для вашего бизнеса.

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

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

  • Получайте сертификат в надежном центре сертификации, который может предоставить техническую поддержку.
  • Определите, какой тип сертификата предпочтителен для вашего сайта:
    • Одиночный сертификат для одного защищенного источника (например, www.example.com).
    • Многодоменный сертификат для нескольких известных защищенных источников (например, www.example.com, cdn.example.com, example.co.uk).
    • Сертификат-шаблон для защищенного источника с несколькими динамическими субдоменами. (например, a.example.com, b.example.com).

Используйте переадресацию 301 на стороне сервера

Перенаправляйте пользователей и поисковые системы на страницу с поддержкой HTTPS или ресурс с переадресацией 301 на стороне сервера для адресов HTTP.

Убедитесь, что страницы HTTPS можно сканировать и индексировать

  • Не запрещайте посредством файлов robots.txt сканировать и индексировать страницы HTTPS.
  • Не используйте на страницах HTTPS метатеги noindex .
  • Чтобы проверить, может ли робот Googlebot обработать ваш сайт, воспользуйтесь инструментом .

Используйте технологию HSTS

На сайтах, использующих протокол HTTPS, рекомендуется применять технологию HSTS (HTTP Strict Transport Security). В этом случае браузер будет запрашивать страницы HTTPS, даже если пользователь введет http в адресной строке. а Google будет предоставлять в результатах поиска только защищенные URL. Все это снижает вероятность показа пользователям незащищенного содержания.

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

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

  1. Выполните переход на HTTPS, не включая HSTS.
  2. Активируйте отправку заголовков HSTS с минимальным значением директивы max-age. Отслеживайте объем трафика пользователей и других клиентов, а также эффективность зависимых объектов, например объявлений.
  3. Постепенно увеличивайте значение max-age в заголовках HSTS.
  4. Если HSTS не затрудняет пользователям и поисковым системам просмотр веб-страниц, то сайт можно добавить в список предварительной загрузки . Большинство популярных браузеров использует этот список, чтобы проверять, защищен ли тот или иной сайт.

Включите предварительную загрузку HSTS

Распространенные проблемы

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

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

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

Чтобы разные электронные устройства могли взаимодействовать между собой, передавать и принимать информацию требуется набор определенных правил и соглашений, которого все они будут придерживаться, это называется протоколом передачи данных. В настоящее время для связи компьютеров между собой в сети интернет используется стек протоколов TCP/IP , а самым распространенным протоколом прикладного уровня является протокол HTTP (HyperText Transfer Prоtocоl) использующийся для просмотра сайтов в World Wide Web .

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

Новичкам в интернете нужно понимать, что схема не зависит от используемого вами устройства или операционной системы. Все работает одинаковым образом на компьютере, смартфоне или телевизоре и неважно стоит на них Windows, Mac OS или Android.

Однако у данной схемы есть один существенный недостаток, все данные передаются по сети по не защищенным каналам в открытом виде, как есть. Причем нужно учитывать, что ваш браузер не устанавливает соединение с сервером напрямую тет-а-тет, а соединение происходит через множество промежуточных узлов, сначала вашей локальной сети (если она есть), затем принадлежащих вашему провайдеру, а потом и другим организациям пока в итоге не попадет на нужный сервер. В этом легко убедиться, если в командной строке Windows выполнить команду "tracert имя_хоста " (в Linux и MAC команда будет "traceroute имя_хоста "). Сначала с помощью dns-сервера будет определен ip-адрес нужного сервера, а затем построена цепочка прохождения пакетов до конечной точки, результат будет выглядеть примерно так.


Для начинающих пользователей это может быть удивительно но, тем не менее, это так. Отсюда можно сделать вывод, что если к одному из промежуточных узлов в цепочке к веб-серверу злоумышленник получит доступ, то он сможет перехватывать ваш трафик с сайтом и следовательно сможет получить все введенные вами пароли, персональную информацию, номера кредитных карт и так далее. Это особенно критично при использовании WI-Fi сетей в общественных местах. Последствия этого наверно объяснять не требуется. Это так называемая атака «человек посередине» или Man in the middle (MiTM).

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

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

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

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

Как определить используемый на сайте протокол

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

Хотя в адресной строке протокол обычно не показывается (IE отображает). При этом в Firefox и Chrome слева от адреса показывается значок в виде буквы i в кружке серого цвета, а в Яндекс.браузере значок земного шара справа в конце строки. Если навести курсор мыши на них, то появится подсказка, что используется не защищенное соединение. Нужно понимать, что все меняется и даже в разных версиях одного браузера внешний вид может отличаться.


Чтобы установить защищенное соединение с сайтом, нужно явно указать безопасный протокол перед адресом страницы https://сайт в адресной строке браузера. В результате будет установлено зашифрованное соединение по протоколу HTTPS, о чем браузер обязательно уведомит пользователя тем или иным способом. Обычно при этом браузер не скрывает в URL что используется https и дополнительно показывает иконку закрытого замка серого или зеленого цвета. Браузер Хром дополнительно пишет перед адресом зеленым цветом слово «Надежный».


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

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

Для наглядности можете попробовать перейти по этой ссылке http://yandex.ru на поисковую систему Яндекс. Несмотря на прямо указанный протокол http вас принудительно перебросит на https, потому что теперь он доступен только по защищенному протоколу. Порой это может создавать проблемы некоторым пользователям компьютера.

Как работает HTTPS

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

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

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

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

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

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

Зачем сайту нужен цифровой сертификат

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

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


Реализовать проверку подлинности не так просто. Представьте себе, что вам нужно встретиться с незнакомым человеком, которого вы никогда не видели и вам известно только его ФИО. Как убедиться, что человек пришедший на встречу действительно тот за кого себя выдает? Вариантов не так много, самый простой попросить его предъявить свой паспорт и если ФИО совпадет с тем которое вы ожидаете, значит это действительно он.

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

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

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

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

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

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

Следует отметить одну особенность, не всегда все сертификаты совместимы со всеми браузерами. Порой старые браузеры не доверяют некоторым сертификатам подписанным новыми центрами сертификации и соответственно не соединяются с сайтом. В качестве примера можно привести несовместимость сертификатов выданных организацией Let’s Encrypt с Internet Explorer в Windows XP. В этом можно убедиться попробовав открыть в нем этот сайт по https.

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

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

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

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

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

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

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

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

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


В случае если внутри https соединения происходит попытка загрузки скриптов (js) или стилей (css) по протоколу http, то браузеры блокируют их загрузку, поскольку считают серьезной уязвимостью. Остальная часть загруженной страницы считается безопасной, но она может не работать должным образом из-за заблокированных файлов. Если человек все равно желает загрузить их, то может нажать соответствующую кнопку в информационном сообщении. Браузер выполнит перезагрузку страницы с учетом всех ресурсов, но пометит ее ненадежной.

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

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

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

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