Объяснение принципов работы SSL-сертификатов и HTTPS
IPAddress-Lookup.com ·
Каждый раз, когда вы заходите на сайт и видите маленький замок рядом с адресом или замечаете, что URL начинается с https:// вместо http://, вы полагаетесь на одну из важнейших технологий современного Интернета: шифрование SSL/TLS и цифровые сертификаты, которые его обеспечивают. Эти сертификаты незаметно защищают ваши пароли, номера кредитных карт, личные сообщения и привычки просмотра веб-страниц от любого, кто может прослушивать сетевую связь между вами и сервером. Однако, несмотря на столь фундаментальное значение, принципы работы SSL-сертификатов и протокола HTTPS остаются загадкой для большинства людей. Это руководство приоткрывает завесу тайны и простым языком объясняет, что именно представляют собой SSL/TLS, как работает шифрование, что на самом деле подтверждает сертификат и как ваш браузер решает, доверять ли сайту или нет.
Что на самом деле представляют собой SSL и TLS
SSL — это аббревиатура от Secure Sockets Layer (протокол безопасных сокетов), который изначально был разработан компанией Netscape в середине 1990-х годов для обеспечения безопасности связи между веб-браузерами и серверами. Проблема, которую он решал, была проста в формулировке, но сложна в устранении: в первоначальном Интернете (HTTP) все данные передавались в виде обычного, читаемого текста. Любой, кто находился между вами и веб-сайтом — злонамеренная точка доступа Wi-Fi, интернет-провайдер, взломанный маршрутизатор — мог прочитать или даже изменить данные, передаваемые в обоих направлениях. SSL обернул этот трафик слоем шифрования, так что он стал бессмысленным для перехватчиков.
Сам протокол SSL сейчас устарел. В SSL 2.0 и SSL 3.0 были обнаружены серьёзные уязвимости, и они уже много лет как выведены из эксплуатации. Протокол, который сегодня фактически обеспечивает безопасность в Интернете, называется TLS (Transport Layer Security). TLS является прямым преемником SSL, и когда люди говорят «SSL-сертификат», они почти всегда имеют в виду сертификат, используемый с TLS. Название просто прижилось, потому что было привычным. Эволюция выглядит следующим образом:
- SSL 1.0 — никогда не выпускался публично из-за недостатков безопасности.
- SSL 2.0 (1995) и SSL 3.0 (1996) — обе версии в настоящее время устарели и повсеместно отключены.
- TLS 1.0 (1999) — первая версия под названием TLS; сегодня также признана устаревшей.
- TLS 1.1 (2006) — выведен из эксплуатации вместе с версией 1.0.
- TLS 1.2 (2008) — по-прежнему широко используется и считается безопасным при правильной настройке.
- TLS 1.3 (2018) — текущий стандарт, более быстрый и лишенный устаревших слабых алгоритмов.
TLS 1.3 стал результатом значительной переработки. В нём были удалены десятки устаревших вариантов шифрования, которые приводили к уязвимостям, а также оптимизирован процесс установления соединения, благодаря чему безопасные сеансы устанавливаются быстрее. Современные браузеры согласовывают самую высокую версию, поддерживаемую обеими сторонами, что на практике означает TLS 1.2 или 1.3.
Что на самом деле делает SSL-сертификат
SSL/TLS-сертификат выполняет две отдельные задачи, и важно понимать, что они не связаны между собой. Первая — шифрование, то есть кодирование данных, чтобы их нельзя было прочитать во время передачи. Вторая — аутентификация, или проверка подлинности: подтверждение того, что сервер, с которым вы взаимодействуете, действительно принадлежит домену, указанному в адресной строке, а не мошеннику, перехватившему ваше соединение.
Шифрование без аутентификации было бы опасным. У вас могло бы быть идеально зашифрованное соединение с злоумышленником, который просто ретранслирует ваш трафик, одновременно просматривая всю информацию. Сертификат решает эту проблему, привязывая криптографический ключ к проверенной личности. Когда ваш браузер принимает сертификат, он подтверждает как конфиденциальность соединения, так и то, что противоположная сторона является именно тем, за кого себя выдает. Именно эти две гарантии вместе делают безопасными онлайн-банкинг, покупки в Интернете и вход в системы.
Асимметричная и симметричная криптография
Чтобы понять, как работает HTTPS, вам понадобятся два понятия из криптографии, и они проще, чем кажется.
Симметричное шифрование использует один общий секретный ключ как для шифрования, так и для дешифрования данных. Оно чрезвычайно быстрое и эффективное, что делает его идеальным для шифрования больших объемов данных в ходе реального сеанса просмотра веб-страниц. Проблема очевидна: обеим сторонам нужен один и тот же ключ, и если отправить этот ключ по незащищенной сети, злоумышленник может его перехватить.
Асимметричное шифрование решает проблему обмена ключами с помощью пары ключей: открытого ключа, который может увидеть любой, и закрытого ключа, который владелец держит в секрете. Данные, зашифрованные открытым ключом, можно расшифровать только с помощью закрытого ключа, и наоборот. Это позволяет двум незнакомым людям договориться о секрете по открытому каналу. Однако асимметричная криптография работает медленно, поэтому её не используют на протяжении всего сеанса связи.
HTTPS сочетает в себе лучшие качества обоих подходов. В начале сеанса он кратковременно использует медленную асимметричную криптографию для безопасного установления общего секрета, а затем переключается на быстрое симметричное шифрование на оставшуюся часть сеанса. Этот процесс согласования называется «рукопожатием TLS».
Как работает HTTPS: пошаговое руководство по TLS-рукопожатию
Когда вы вводите веб-адрес, ваш браузер сначала преобразует доменное имя в IP-адрес — этот процесс тесно связан с работой DNS — а затем устанавливает соединение с этим сервером. Прежде чем начнется обмен данными веб-страниц, происходит TLS-рукопожатие. Вот что происходит, шаг за шагом.
- ClientHello. Ваш браузер отправляет первое сообщение. В нём перечислены поддерживаемые им версии TLS, наборы шифров (комбинации алгоритмов шифрования), которые он может использовать, а также случайное значение, которое будет использовано при генерации ключа. Представьте, что это как бы сообщение: «Вот кто я такой и вот на каких языках я могу говорить».
- ServerHello. Сервер отвечает, выбирая из списка браузера версию TLS и набор шифров, которые он будет использовать, и отправляет своё собственное случайное значение. Теперь обе стороны согласовывают правила взаимодействия.
- Сертификат. Сервер предъявляет свой сертификат SSL/TLS, содержащий его открытый ключ и информацию об идентичности, подписанную центром сертификации. Именно в этот момент ваш браузер проверяет, является ли сертификат действительным, доверенным и выданным для домена, который вы посещаете.
- Обмен ключами. Используя открытый ключ из сертификата (или современный алгоритм согласования ключей, такой как Diffie-Hellman с эллиптической кривой), обе стороны безопасно вычисляют общий секрет. Важно, что даже перехватчик, отслеживающий каждое сообщение, не сможет вычислить этот секрет, поскольку закрытый ключ никогда не покидает сервер.
- Сессионные ключи и завершение. Обе стороны используют обмененные данные и два случайных значения для генерации одинакового набора симметричных сессионных ключей. Каждая из них отправляет сообщение «finished», зашифрованное этими ключами, чтобы подтвердить успешное завершение рукопожатия. С этого момента весь обмен данными шифруется симметрично — быстро, конфиденциально и с защитой от подделки.
Обычно всё это занимает доли секунды. В TLS 1.3 установление соединения было сокращено до одного цикла обмена данными, а постоянные посетители иногда могут возобновить соединение ещё быстрее. В результате получается безопасный канал, по которому передаются ваши фактические HTTPS-запросы и ответы.
Центры сертификации и цепочка доверия
Сертификат заслуживает доверия ровно настолько, насколько заслуживает доверия организация, которая за него ручается. Эта роль принадлежит центру сертификации (CA) — организации, которой ваш браузер и операционная система заранее решили доверять. Когда владелец веб-сайта запрашивает сертификат, ЦС проверяет его контроль над доменом (а иногда и идентичность компании), прежде чем подписать сертификат собственным ключом. Именно эту подпись проверяет ваш браузер.
Цепочка доверия состоит из трёх звеньев:
- Корневой сертификат. Вершина цепочки. Корневые сертификаты заранее установлены в вашем браузере и операционной системе в «хранилище доверия». Их закрытые ключи хранятся в автономном режиме под строгой защитой, поскольку компрометация одного из них подорвала бы всю систему.
- Промежуточный сертификат. Корневые сертификаты не подписывают сертификаты веб-сайтов напрямую. Вместо этого они подписывают один или несколько промежуточных сертификатов, которые затем подписывают собственно сертификаты сайтов. Это позволяет изолировать ценный корневой ключ и отзывать скомпрометированный промежуточный сертификат, не затрагивая корневой сертификат.
- Листовой сертификат. Его также называют сертификатом конечного объекта; именно он установлен на самом веб-сайте. Он подписан промежуточным сертификатом.
Когда браузер проверяет сайт, он прослеживает эту цепочку: конечный сертификат подписан промежуточным сертификатом, промежуточный сертификат — другим промежуточным сертификатом или корневым, а корневой сертификат — это тот, которому браузер уже доверяет. Если все звенья цепочки проходят проверку, а корневой сертификат находится в хранилище доверенных сертификатов, сертификат принимается. Этот процесс называется построением цепочки, и одной из распространённых причин ошибок «недоверие» является то, что сервер забывает отправить свой промежуточный сертификат, что приводит к разрыву цепочки.
Типы сертификатов
Не все сертификаты одинаковы. Они различаются по степени тщательности проверки заявителя центром сертификации (CA) и по количеству доменов, которые они охватывают. В таблице ниже приведены основные типы.
| Тип | Уровень проверки | Что подтверждает | Типичное применение |
|---|---|---|---|
| DV (проверка домена) | Базовый — проверка только домена | Заявитель контролирует домен | Блоги, личные сайты, большинство современных веб-сайтов |
| OV (подтверждение организации) | Уровень «Средний» — проверка идентичности организации | Домен принадлежит проверенной организации | Бизнес-сайты и корпоративные сайты |
| EV (расширенная проверка) | Строгий уровень — тщательная юридическая проверка | Строгое подтверждение юридического лица | Банки, крупные интернет-магазины, сервисы с высоким уровнем доверия |
| Подстановочный знак | Любой из вышеперечисленных | Обеспечивает защиту домена и всех его субдоменов | *.example.com, включая магазин, блог, почту и т. д. |
| Мультидоменный (SAN/UCC) | Любой из вышеперечисленных | Обеспечивает защиту нескольких отдельных доменов одним сертификатом | Организации, управляющие множеством отдельных доменов |
Важный момент для обычных пользователей: с точки зрения шифрования сертификаты DV, OV и EV идентичны. Все они обеспечивают одинаковую надежную защиту ваших данных. Разница заключается исключительно в подтверждении подлинности. Когда-то сертификаты EV отображали название компании зеленым цветом в адресной строке, но браузеры в значительной степени устранили это отличие, поэтому сегодня большинство сайтов используют недорогие или бесплатные сертификаты DV.
Сертификаты с подстановочным знаком и мультидоменные сертификаты
Сертификат с подстановочным знаком использует звездочку для охвата всех поддоменов базового домена — например, один сертификат для *.example.com одновременно защищает www.example.com, shop.example.com и login.example.com. Мультидоменный сертификат, иногда называемый сертификатом SAN или UCC, содержит несколько совершенно разных доменных имен в одном сертификате. Оба типа сертификатов позволяют сократить количество сертификатов, которыми приходится управлять администратору.
Что содержится в сертификате
Сертификат представляет собой структурированный документ, и вы можете просмотреть каждое его поле. Наиболее важные из них:
- Субъект. Идентификационные данные, на которые выдан сертификат, в первую очередь — доменное имя (Common Name).
- «Issuer» (Выдающий центр). Центр сертификации, который подписал и выдал сертификат.
- Срок действия. Даты «не ранее» и «не позднее», в течение которых сертификат действителен.
- Альтернативные имена субъекта (SAN). Полный список доменных имен, на которые распространяется действие сертификата. Современные браузеры используют поле SAN, а не устаревшее поле «Общее имя» (Common Name), для сопоставления с сайтом.
- Открытый ключ. Открытая половина пары ключей, используемая во время установления соединения.
- Алгоритм подписи. Криптографический метод, используемый центром сертификации для подписи, например SHA-256 с RSA или ECDSA.
- Отпечаток. Уникальный хеш всего сертификата, полезный для его точной идентификации.
- Серийный номер. Уникальный идентификатор, присваиваемый выдающим центром сертификации.
Когда браузер проверяет сайт, он удостоверяется, что текущая дата находится в пределах срока действия сертификата, что одна из записей SAN соответствует домену, что подпись не повреждена и что цепочка ведет к доверенному корневому сертификату.
Срок действия сертификата и причины сокращения срока действия
У каждого сертификата есть дата истечения срока действия, и с годами этот срок резко сокращается. Сертификаты, которые когда-то действовали несколько лет, теперь ограничены примерно одним годом или меньше, причем отрасль движется в направлении еще более коротких сроков действия, измеряемых неделями. У этой тенденции есть веские причины.
Более короткий срок действия ограничивает ущерб в случае кражи закрытого ключа — скомпрометированный сертификат просто истекает раньше, сокращая окно возможностей, которым может воспользоваться злоумышленник. Это также гарантирует, что устаревшие криптографические алгоритмы и отозванные или ошибочно выданные сертификаты быстро выходят из экосистемы. Компромисс заключается в том, что администраторам приходится продлевать сертификаты гораздо чаще, поэтому автоматизация стала не просто удобством, а необходимостью.
Что происходит, когда сертификат недействителен
Если какая-либо часть проверки завершается неудачей, браузер прерывает соединение, отображая полноэкранное предупреждение вместо небольшого значка. Распространённые причины сбоев:
- Срок действия сертификата истек. Текущая дата превышает дату «не позднее». Это самая частая причина и обычно означает, что кто-то забыл продлить сертификат.
- Самоподписанный сертификат. Сертификат был подписан собственным ключом, а не доверенным центром сертификации (CA), поэтому цепочка доверия отсутствует. Это подходит для внутреннего тестирования, но браузеры отклоняют такие сертификаты для общедоступных сайтов.
- Несоответствие имени. Домен, который вы посетили, не фигурирует в списке SAN сертификата — например, сертификат для одного домена используется на другом.
- Недоверенный выдающий центр. Цепочка сертификатов ведёт к корневому сертификату, которого нет в вашем хранилище доверенных сертификатов, часто из-за отсутствия промежуточного сертификата или того, что центр сертификации не распознаётся.
- Отзыв сертификата. Центр сертификации аннулировал сертификат до истечения его срока действия, как правило, из-за компрометации ключа.
В каждом из этих случаев браузер по умолчанию отображает предупреждение типа «Ваше соединение не является конфиденциальным» и блокирует доступ к странице. Эти предупреждения предназначены для вашей защиты: несоответствующий или недоверенный сертификат может быть признаком реальной атаки с перехватом данных, поэтому на сайтах, обрабатывающих конфиденциальные данные, ни в коем случае нельзя легкомысленно игнорировать такие предупреждения.
Бесплатные сертификаты и автоматическое продление
Одним из важнейших достижений в области веб-безопасности стало появление бесплатных автоматизированных сертификатов. Let’s Encrypt, некоммерческий центр сертификации, сделал сертификаты DV доступными бесплатно и, что не менее важно, полностью автоматизируемыми с помощью протокола ACME (Automated Certificate Management Environment).
С помощью ACME сервер может подтвердить контроль над своим доменом, запросить сертификат, установить его и продлить до истечения срока действия — и всё это без участия человека. Именно поэтому короткий срок действия сертификатов является практичным решением: сертификат, который продлевается самостоятельно каждые пару месяцев, не создаёт никаких операционных проблем. Сочетание бесплатной выдачи и автоматизации стало одной из главных причин, по которой HTTPS превратился из функции, доступной лишь немногим, в практически повсеместный стандарт во всём Интернете.
Как проверить сертификат сайта
Для проверки сертификата не требуется специального программного обеспечения. В любом современном браузере можно щелкнуть значок замка в адресной строке и выбрать опцию просмотра сведений о сертификате, где вы найдете субъект, выдающего органа, сроки действия, список SAN и отпечаток. Это быстрый способ убедиться, что вы находитесь на подлинном сайте, и проверить, когда истекает срок действия сертификата.
Для более быстрого и подробного просмотра — включая полную цепочку сертификатов, алгоритм подписи и количество дней, оставшихся до истечения срока действия — можно воспользоваться онлайн-инструментом. Наш собственный инструмент проверки SSL-сертификатов позволяет ввести любой домен и мгновенно увидеть, действителен ли его сертификат, правильно ли он привязан к доверенному корневому сертификату и сколько времени осталось до необходимости его продления. Это простой способ обнаружить сертификат, срок действия которого скоро истечет, до того, как он вызовет предупреждение браузера у ваших посетителей.
Часто задаваемые вопросы
SSL — это то же самое, что и TLS?
Не совсем. SSL — это более старый протокол, который сейчас устарел, а TLS — его современный преемник, который и обеспечивает безопасность веб-сайтов сегодня. Однако термин «SSL-сертификат» укоренился по привычке, поэтому в повседневном употреблении «SSL» и «TLS» часто используются как синонимы, даже если в основе лежит технология TLS.
Означает ли значок замка, что сайт безопасен?
Замковый значок означает, что ваше соединение с сайтом зашифровано и сертификат действителен для данного домена. Он не гарантирует, что сам сайт является честным или свободным от мошенничества — даже мошеннические сайты могут получить бесплатные DV-сертификаты. Рассматривайте замок как признак конфиденциального соединения, а не как знак общей надежности.
Являются ли бесплатные SSL-сертификаты такими же безопасными, как и платные?
Да, с точки зрения шифрования. Бесплатный DV-сертификат от центра сертификации, такого как Let's Encrypt, обеспечивает точно такую же степень защиты, как и дорогой сертификат. Платные OV- и EV-сертификаты включают дополнительную проверку идентичности организации, но они не делают зашифрованное соединение более безопасным.
Почему на некоторых сайтах появляется предупреждение о сертификате?
Предупреждения о сертификате появляются при сбое проверки — чаще всего из-за того, что срок действия сертификата истек, он не соответствует доменному имени, является самоподписанным или входит в цепочку, связанную с недоверенным центром сертификации. Это предупреждение — мера защиты вашего браузера, и на сайте, где обрабатываются пароли или платежи, не следует игнорировать его, не выяснив причину его появления.
Как долго действуют SSL-сертификаты?
Срок действия современных публичных сертификатов обычно составляет около года или меньше, и отрасль неуклонно движется в сторону значительного сокращения этого срока. Короткий срок действия снижает риск, связанный с кражей ключей, и вытесняет устаревшую криптографию из использования. Автоматическое обновление с помощью протоколов, таких как ACME, упрощает процесс частого обновления.
Можно ли проверить сертификат, не заходя на сайт в браузере?
Да. Онлайн-инструменты позволяют ввести доменное имя и просмотреть сведения о его сертификате, включая эмитента, сроки действия, полную цепочку доверия и количество дней до истечения срока, без необходимости вручную проверять значок замка. Это удобно для мониторинга ваших собственных сайтов или проверки домена перед его посещением.