Cryptology Academy · Урок

Проверка сертификатов в TLS

Проследите, как клиент проверяет цепочку сертификатов сервера

Урок 3 из 413 шагов

«Проверка сертификатов в TLS» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Зачем проверять сертификаты?

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

Поля сертификата X.509, важные для TLS

Основные поля: субъект (кто владеет сертификатом), SubjectAltName (имена DNS и IP-адреса), издатель (подписывающий CA), срок действия (notBefore/notAfter), открытый ключ, подпись. Браузер проверяет все эти поля.

Цепочка доверия

Сертификат сервера → сертификат промежуточного CA → корневой сертификат CA. Корневой CA самоподписан и предварительно установлен в хранилище доверия OS или браузера. Сервер отправляет свой сертификат и промежуточные сертификаты в сообщении о сертификатах во время рукопожатия TLS.

Проверка подписей

Каждый сертификат подписан вышестоящим издателем. Клиент проверяет: signature(cert_n) с использованием public_key(cert_{n+1}). Если какая-либо подпись недействительна, цепочка отклоняется. Корневому сертификату доверяют благодаря предварительной установке, а не подписи.

Проверка имени

Клиент проверяет, что имя сервера совпадает с полем Subject или SubjectAltName сертификата (записями DNS). Подстановочные знаки (*.example.com) соответствуют одной метке. С 2000 года SAN имеет приоритет над CN при сопоставлении имени сервера.

Проверка срока действия

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

Отзыв: CRL

CA публикует список отозванных сертификатов (CRL) — подписанный список серийных номеров отозванных сертификатов. Клиент загружает URL списка CRL (из расширения точек распространения CRL сертификата) и проверяет наличие серийного номера.

Отзыв: OCSP

Протокол проверки статуса сертификатов через Интернет (OCSP) позволяет клиентам запрашивать у ответчика OCSP центра сертификации статус одного сертификата. Это быстрее, чем CRL, но увеличивает задержку. При прикреплении OCSP сервер включает подписанный ответ OCSP в рукопожатие TLS.

Прозрачность сертификатов

CT (RFC 6962) требует от CA регистрировать все выпущенные сертификаты в общедоступных журналах, допускающих только добавление записей. Браузеры проверяют наличие подписанных временных меток сертификата (SCT) в сертификате или расширении TLS. Это не позволяет оставаться незамеченной выдаче сертификатов с нарушениями.

Закрепление ключей

Закрепление открытого ключа HTTP (HPKP, устарело) и закрепление сертификата в мобильных приложениях фиксируют определённый открытый ключ или хэш сертификата. Если сервер предъявляет другой сертификат, соединение отклоняется даже при его действительности — это предотвращает атаки в случае компрометации CA.

Распространённые ошибки проверки

ERR_CERT_AUTHORITY_INVALID: корневому сертификату не доверяют. ERR_CERT_DATE_INVALID: срок действия истёк. ERR_CERT_COMMON_NAME_INVALID: имя сервера не совпадает. NET::ERR_CERT_REVOKED: OCSP или CRL сообщает об отзыве. Каждая ошибка соответствует сбою определённого этапа проверки.

Быстрая проверка

Что обеспечивает прикрепление OCSP?

Итоги

Проверка сертификатов в TLS включает проверку цепочки, проверку подписей, сопоставление имён, проверку сроков действия и отзыв сертификатов. Далее: исторические атаки на TLS и способы их предотвращения в TLS 1.3.

Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Проверка сертификатов в TLS» бесплатный?

Да — полный текст урока «Проверка сертификатов в TLS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Проверка сертификатов в TLS»?

Проследите, как клиент проверяет цепочку сертификатов сервера Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Проверка сертификатов в TLS»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Рукопожатие TLS 1.3 шаг за шагом
  2. Уровень записей TLS и наборы шифров
  3. Проверка сертификатов в TLS
  4. Атаки на TLS: BEAST, POODLE и понижение версии
← Назад к Cryptology Academy