Много раз в день вы посещаете веб-сайты, на которых вас просят войти под своим именем пользователя, адресом электронной почты и паролем. Банковские сайты, сайты социальных сетей, почтовые службы, сайты электронной коммерции и новостные сайты - это всего лишь несколько типов сайтов, использующих этот механизм.
Каждый раз, когда вы входите на один из этих сайтов, вы, по сути, говорите: «Да, я доверяю этому сайту, поэтому я хочу поделиться с ним своей личной информацией». Эти данные могут включать ваше имя, пол, физический адрес, адрес электронной почты, а иногда даже информацию о кредитной карте.
Но откуда вы знаете, что можете доверять определенному веб-сайту? Иными словами, что делает веб-сайт для защиты вашей транзакции, чтобы вы могли доверять ей?
Эта статья направлена на демистификацию механизмов, которые делают сайт безопасным. Мы начнем с обсуждения веб-протоколов HTTP и HTTPS и концепции безопасности транспортного уровня (TLS - Transport Layer Security), которая является одним из криптографических протоколов. Затем мы объясним центры сертификации (CA - Certificate Authorities) и самозаверяющие сертификаты и как они могут помочь защитить веб-сайт. Наконец, я представлю некоторые инструменты с открытым исходным кодом, которые вы можете использовать для создания и управления сертификатами.
Защита маршрутов через HTTPS
Самый простой способ понять защищенный веб-сайт - это увидеть его в действии. К счастью, сегодня найти защищенный веб-сайт гораздо проще, чем незащищенный веб-сайт в Интернете. Но, поскольку вы уже находитесь на сайте wiki.merionet.ru, будем использовать его в качестве примера. Независимо от того, какой браузер вы используете, вы должны увидеть значок, который выглядит как замок рядом с адресной строкой. Нажмите на значок замка, и вы должны увидеть что-то похожее на это.
По умолчанию веб-сайт не является безопасным, если он использует протокол HTTP. Добавление сертификата, настроенного через хост сайта, может преобразовать сайт из незащищенного сайта HTTP в защищенный сайт HTTPS. Значок замка обычно указывает, что сайт защищен через HTTPS.
Нажмите на сертификат, чтобы увидеть CA сайта. В зависимости от вашего браузера вам может понадобиться скачать сертификат, чтобы увидеть его.
Здесь вы можете узнать кое-что о сертификате, кем, кому и когда был выдан. Эта информация о сертификате позволяет конечному пользователю проверить, что сайт безопасен для посещения.
ВНИМАНИЕ: Если вы не видите знак сертификата на веб-сайте или если вы видите знак, указывающий на то, что веб-сайт не защищен, пожалуйста, не входите в систему и не выполняйте действия, требующие ваших личных данных. Это довольно опасно!
Если вы видите предупреждающий знак, который редко встречается на большинстве общедоступных веб-сайтов, это обычно означает, что срок действия сертификата истек или используется самозаверяющий сертификат вместо сертификата, выпущенного через доверенный CA.
Интернет-протоколы с TLS и SSL
TLS - это текущее поколение старого протокола Secure Socket Layer (SSL). Лучший способ понять его место - посмотреть на модель OSI.
Есть шесть уровней, которые составляют Интернет, каким мы его знаем сегодня: физический, данные, сеть, транспорт, безопасность и приложения. Физический уровень является базовой основой, и он наиболее близок к реальному оборудованию. Прикладной уровень является наиболее абстрактным и ближайшим к конечному пользователю. Уровень безопасности можно рассматривать как часть уровня приложений, а TLS и SSL, которые являются криптографическими протоколами, разработанными для обеспечения безопасности связи по компьютерной сети, находятся на уровне безопасности.
Основным вариантом использования TLS является шифрование связи между веб-приложениями и серверами, такими как веб-браузеры, загружающие веб-сайт. Протокол TLS также можно использовать для шифрования других сообщений, таких как электронная почта, обмен сообщениями и передача голоса по IP (VOIP).
Центры сертификации и самозаверяющие сертификаты
Центр Сертификации (CA) - это доверенная организация, которая может выдавать цифровой сертификат.
TLS и SSL могут сделать соединение безопасным, но для механизма шифрования необходим способ его проверки - это сертификат SSL/TLS. TLS использует механизм, называемый асимметричным шифрованием, который представляет собой пару ключей безопасности, называемых закрытым ключом (private key) и открытым ключом (public key). Важно знать, что центры сертификации, такие как GlobalSign, DigiCert и GoDaddy являются внешними доверенными поставщиками, которые выпускают сертификаты, которые используются для проверки сертификата TLS/SSL, используемого веб-сайтом. Этот сертификат импортируется на хост-сервер для защиты сайта.
Прежде чем какой-либо крупный веб-браузер, такой как Chrome, Firefox, Safari или Internet Explorer, подключится к вашему серверу по протоколу HTTPS, он уже имеет в своем распоряжении набор сертификатов, которые можно использовать для проверки цифровой подписи, найденной в сертификате вашего сервера. Эти цифровые сертификаты веб-браузера называются сертификатами CA. Если с сертификатом на сервере все ок, то мы попадаем на сайт, а если нет, то браузер покажет нам предупреждение. Закрытые ключи, используемые для подписи сертификатов сервера, уже имеют соответствующие пары открытых ключей в веб-браузерах пользователей.
Однако CA может быть слишком дорогим или сложным, когда вы просто пытаетесь протестировать веб-сайт или услугу в разработке. У вас должен быть доверенный ЦС для производственных целей, но разработчикам и администраторам веб-сайтов необходим более простой способ тестирования веб-сайтов, прежде чем они будут развернуты в рабочей среде - именно здесь приходят самозаверяющие сертификаты.
Самозаверяющий сертификат - это сертификат TLS/SSL, подписанный лицом, которое его создает, а не доверенным центром сертификации. Создать самозаверяющий сертификат на компьютере очень просто, и он может позволить вам протестировать защищенный веб-сайт, не покупая дорогой сертификат, подписанный СА, сразу. Хотя самозаверяющий сертификат определенно рискованно использовать в производственной среде, он является простым и гибким вариантом для разработки и тестирования на подготовительных этапах.
Инструменты с открытым исходным кодом для генерации сертификатов
Для управления сертификатами TLS/SSL доступно несколько инструментов с открытым исходным кодом. Наиболее известным из них является OpenSSL, который включен во многие дистрибутивы Linux и в macOS. Тем не менее, другие инструменты с открытым исходным кодом также доступны.
- OpenSSL - Самый известный инструмент с открытым исходным кодом для реализации библиотек TLS и шифрования Apache
- EasyRSA - Утилита командной строки для создания и управления PKI CA
- CFSSL - PKI/TLS "Швейцарский нож" от Cloudflare
- Lemur - Инструмент создания TLS от Netflix