Как отключить всегда использовать безопасное соединение. Почему https важен для Одноклассников

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

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

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

Что означает HTTPS?

HTTPS означает HyperText Transfer Protocol Secure. Чтобы разобраться в этом загадочном названии, давайте разобьем ее на составные части.


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

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

Безопасные соединения представляют собой комбинацию из двух протоколов: HTTP и SSL/TLS. Последние являются криптографическими протоколами, которые шифруют соединение сети. Сокращение переводятся как протоколы Secure Sockets Layer и Transport Layer Security. Кроме просмотра веб-страниц, эти протоколы используются для шифрования передачи данных в сообщениях электронной почты, онлайн-факсов, мгновенных сообщений и голоса поверх IP.

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

Как Вы можете всегда включать HTTPS?

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

Если Вы хотите перестраховаться и всегда использовать HTTPS, когда это возможно, рекомендуется использовать расширение Firefox, которое называется . HTTPS Everywhere - результат сотрудничества между Tor Project и Electronic Frontier Foundation,. Недавно была выпущена версия 1.0 и расширение официально вышло из стадии бета-тестирования. Теперь в нем содержится список сотни сайтов, которые поддерживают протокол HTTPS.


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

В этом уроке рассмотрим как настроить защищенное соединение ВКонтакте .

Будем включать протокол безопасной передачи данных HTTPS. HTTPS протокол - это протокол, который шифрует все данные, которые вы передаете в интернет.

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

Включается он достаточно просто. Заходим на сайт vk.com и переходим в раздел "Мои настройки". Далее переходим на вкладку "Безопасность".

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

Теперь давайте перейдем на безопасный протокол. Для этого в начале адреса нужно написать https:// . Полный адрес страницы будет таким: https://vk.com/settings?act=security

После того как вы введете новый адрес и нажмете "Enter" страница обновится и в настройках безопасности появится новый блок "Защита передаваемых данных" с возможностью выбрать опцию "Всегда использовать защищенное соединение (HTTPS)". Устанавливаем галочку и щелкаем "Сохранить".

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

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

Ниже вы можете ознакомится с видео на тему настройки защищенного соединения с vk.com.

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

В этом уроке я расскажу как можно изменить адрес страницы ВКонтакте . Это тот короткий адрес, который идет после уже всем знакомых vk.com. Примером такого адреса может быть: vk.com/durov

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

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


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

С большей долей уверенности можно сказать, что с самим сайтом всё в порядке, впрочем, проверить его доступность с помощью какого-нибудь сервиса вроде ping-admin.ru тоже не помешает. Если ресурс доступен, искать причины ошибки следует на компьютере. Причин же может быть несколько. Если сайт использует соединение HTTPS для начала можно проверить, включены ли протоколы SSL2 и SSL3 в свойствах браузера. Откройте классическую панель управления, запустите апплет .

Переключитесь на вкладку «Дополнительно» и убедитесь, что в чекбоксах SSL 2.0 и SSL 3.0 установлены галочки.

Заодно проверьте совпадает ли время на ПК с вашим часовым поясом. Если нет, выставьте правильное время и включите синхронизацию.

Как вариант, можно попробовать отключить фильтрацию протокола HTTPS , хотя делать это нежелательно, так как при этом снижается уровень безопасности. В , к примеру, это можно сделать следующим образом. Перейдите по внутреннему адресу chrome://net-internals/#hsts , в меню слева выберите HSTS , в поле «Dеlеte Domain» вставьте адрес проблемного сайта без приставки HTTPS и нажмите «Dеlеte» .

После этого вы сможете входить на сайт по обычному протоколу HTTP .

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

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

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

Аналогичным образом проверяются настройки другого антивирусного ПО. В частности, с описанной ошибкой приходилось сталкиваться пользователям Dr.Web (настройки брандмауэра) и ESET NOD32 (настройка «Фильтрация протоколов SSL/TLS») . Заодно необходимо проверить работу установленных в браузере расширений, так как некоторые из них, в частности, SaveFrom.net может препятствовать нормальной работе с сетевыми ресурсами. И последнее. Если при открытии сайта вы получаете ошибку доступа , воспользуйтесь самым обычным анонимайзером, а ещё лучше VPN -сервисом, в большинстве случаев эти инструменты позволяет обходить подобные ограничения.

Теги: ,

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

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подписаться

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

Что такое 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. Главное преимущество этого типа сертификата – поддержка альтернативных доменных имен: и внешних, и внутренних.

Можно ли установать на свой сайт бесплатный 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 добавьте строки:

SSLEngine on

SSLCertificateKeyFile /usr/local/ssl/private/private.key

SSLCertificateFile /usr/local/ssl/crt/vashsite.crt

SSLCertificateChainFile /usr/local/ssl/crt/intermediate.crt

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

nginx

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

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

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

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

server{
listen 443;
ssl on;

ssl_certificate /etc/ssl/vashsite.crt;
ssl_certificate_key /etc/ssl/vashsite.key;
server_name vashsite.com;

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

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

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

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

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

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^(.*)$ https://vashsite.com/$1 .

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

Итоги

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

  • Разработка веб-сайтов ,
  • Алгоритмы
    • Перевод

    Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте.

    Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен.

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

    Трубопровод

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

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

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

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

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

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

    Transport Layer Security (TLS)

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

    TLS - наследник SSL - это такой протокол, наиболее часто применяемый для обеспечения безопасного HTTP соединения (так называемого HTTPS). TLS расположен на уровень ниже протокола HTTP в модели OSI . Объясняя на пальцах, это означает, что в процессе выполнения запроса сперва происходят все “вещи”, связанные с TLS-соединением и уже потом, все что связано с HTTP-соединением.

    TLS – гибридная криптографическая система. Это означает, что она использует несколько криптографических подходов, которые мы и рассмотрим далее:

    1) Асиметричное шифрование (криптосистема с открытым ключом) для генерации общего секретного ключа и аутентификации (то есть удостоверения в том, что вы – тот за кого себя выдаете).
    2) Симметричное шифрование , использующее секретный ключ для дальнейшего шифрования запросов и ответов.

    Криптосистема с открытым ключом

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

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

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

    Как это возможно? Математика!

    Алгоритм Ди́ффи - Хе́ллмана

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

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

    Немного математики…

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

    Пусть Алиса и Боб – две стороны, осуществляющие обмен ключами по DH-алгоритму. Сперва они договариваются о некотором основании root (обычно маленьком числе, таком как 2,3 или 5) и об очень большом простом числе prime (больше чем 300 цифр). Оба значения пересылаются в открытом виде по каналу связи, без угрозы компрометировать соединение.

    Напомним, что и у Алисы, и у Боба есть собственные закрытые ключи (из более чем 100 цифр), которые никогда не передаются по каналам связи.

    По каналу связи же передается смесь mixture , полученная из закрытых ключей, а также значений prime и root .

    Таким образом:
    Alice’s mixture = (root ^ Alice’s Secret) % prime
    Bob’s mixture = (root ^ Bob’s Secret) % prime
    где % - остаток от деления

    Таким образом, Алиса создает свою смесь mixture на основе утвержденных значений констант (root и prime ), Боб делает то же самое. Как только они получили значения mixture друг друга, они производят дополнительные математические операции для получения закрытого ключа сессии. А именно:

    Вычисления Алисы
    (Bob’s mixture ^ Alice’s Secret) % prime

    Вычисления Боба
    (Alice’s mixture ^ Bob’s Secret) % prime

    Результатом этих операций является одно и то же число, как для Алисы, так и для Боба, и это число и становится закрытым ключом на данную сессию. Обратите внимание, что ни одна из сторон не должна была пересылать свой закрытый ключ по каналу связи, и полученный секретный ключ так же не передавался по открытому соединению. Великолепно!

    Для тех, кто меньше подкован в математическом плане, Wikipedia дает прекрасную картинку , объясняющую данный процесс на примере смешивания цветов:

    Обратите внимание как начальный цвет (желтый) в итоге превращается в один и тот же “смешанный” цвет и у Боба, и у Алисы. Единственное, что передается по открытому каналу связи так это наполовину смешанные цвета, на самом деле бессмысленные для любого прослушивающего канал связи.

    Симметричное шифрование

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

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

    Аутентификация

    Алгоритм Диффи-Хеллмана позволяет двум сторонам получить закрытый секретный ключ. Но откуда обе стороны могут уверены, что разговаривают действительно друг с другом? Мы еще не говорили об аутентификации.

    Что если я позвоню своему приятелю, мы осуществим DH-обмен ключами, но вдруг окажется, что мой звонок был перехвачен и на самом деле я общался с кем-то другим?! Я по прежнему смогу безопасно общаться с этим человеком – никто больше не сможет нас прослушать – но это будет совсем не тот, с кем я думаю, что общаюсь. Это не слишком безопасно!

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

    Но, на самом деле, что это за сертификат, и как он предоставляет нам безопасность?

    Сертификаты

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

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

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

    Чтобы сертификату доверял любой веб-браузер, он должен быть подписан аккредитованным удостоверяющим центром (центром сертификации, Certificate Authority, CA). CA – это компании, выполняющие ручную проверку, того что лицо, пытающееся получить сертификат, удовлетворяет следующим двум условиям:

    1. является реально существующим;
    2. имеет доступ к домену, сертификат для которого оно пытается получить.

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

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

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

    Прочие вещи которые нужно знать о сертификатах

    Расширенная валидация
    В дополнение к обычным X.509 сертификатам, существуют Extended validation сертификаты, обеспечивающие более высокий уровень доверия. Выдавая такой сертификат, CA совершает еще больше проверок в отношении лица, получающего сертификат (обычно используя паспортные данные или счета).

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

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