Проверка сертификатов в TLS
Проследите, как клиент проверяет цепочку сертификатов сервера
«Проверка сертификатов в 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 — локальная установка не требуется.
Все уроки этого курса
- Рукопожатие TLS 1.3 шаг за шагом
- Уровень записей TLS и наборы шифров
- Проверка сертификатов в TLS
- Атаки на TLS: BEAST, POODLE и понижение версии