Цифровой сертификат X.509
Цифровой сертификат X.509 — это стандартизированный электронный документ, удостоверяющий принадлежность открытого ключа определённому субъекту (пользователю, устройству, организации) и подтверждающий подлинность этого ключа с помощью электронной подписи удостоверяющего центра. Сертификаты X.509 являются фундаментальным компонентом инфраструктуры открытых ключей (PKI) и широко применяются для обеспечения аутентификации, шифрования и целостности данных в компьютерных сетях, включая Интернет.
История и стандартизация
Стандарт X.509 был впервые опубликован Международным союзом электросвязи (ITU-T) в 1988 году в составе рекомендаций X.500, описывающих службы каталогов. Изначально сертификаты X.509 предназначались для аутентификации пользователей в рамках распределённых каталогов X.500. Впоследствии стандарт был адаптирован для использования в сети Интернет Рабочей группой по проектированию Интернета (IETF) в виде спецификаций PKIX (Public Key Infrastructure — X.509).
Основные версии стандарта:
- Версия 1 (v1, 1988): базовая структура с полями для серийного номера, алгоритма подписи, издателя, срока действия, субъекта и открытого ключа.
- Версия 2 (v2, 1993): добавлены поля для идентификаторов уникальных имён издателя и субъекта, что позволило повторно использовать имена.
- Версия 3 (v3, 1996): введены расширения — гибкие поля, позволяющие добавлять дополнительные атрибуты (например, ключевое использование, альтернативные имена субъекта, политики сертификатов). Версия 3 является наиболее распространённой на сегодняшний день.
Структура сертификата
Сертификат X.509 v3 состоит из трёх основных частей: данных сертификата, алгоритма подписи и самой цифровой подписи.
Основные поля данных
- Версия (Version): номер версии сертификата (1, 2 или 3).
- Серийный номер (Serial Number): уникальный целочисленный идентификатор, присваиваемый удостоверяющим центром (УЦ) каждому выданному сертификату.
- Алгоритм подписи (Signature Algorithm): идентификатор алгоритма, используемого УЦ для подписи сертификата (например, sha256WithRSAEncryption).
- Издатель (Issuer): различающееся имя (Distinguished Name, DN) удостоверяющего центра, выпустившего сертификат.
- Период действия (Validity): дата и время начала и окончания срока действия сертификата.
- Субъект (Subject): различающееся имя владельца сертификата (пользователя, веб-сайта, организации).
- Открытый ключ субъекта (Subject Public Key Info): алгоритм открытого ключа и само значение открытого ключа.
- Уникальные идентификаторы (Unique Identifiers, v2 и v3): необязательные поля для устранения неоднозначности имён.
- Расширения (Extensions, v3): набор стандартных и пользовательских полей, расширяющих функциональность сертификата.
Стандартные расширения версии 3
- Key Usage (Ключевое использование): определяет, для каких криптографических операций может использоваться ключ (цифровая подпись, шифрование ключей, шифрование данных и т.д.).
- Extended Key Usage (Расширенное ключевое использование): уточняет цель сертификата (например, серверная аутентификация TLS, клиентская аутентификация, подпись кода).
- Subject Alternative Name (SAN, Альтернативное имя субъекта): позволяет указать несколько доменных имён, IP-адресов или электронных почт, для которых действителен сертификат. Критически важно для современных веб-сертификатов TLS.
- Basic Constraints (Базовые ограничения): указывает, является ли субъект удостоверяющим центром, и задаёт максимальную глубину цепочки сертификатов.
- Certificate Policies (Политики сертификата): ссылки на документы, описывающие правила выпуска и использования сертификата.
- Authority Key Identifier (Идентификатор ключа издателя): уникальный идентификатор открытого ключа УЦ, подписавшего сертификат.
- Subject Key Identifier (Идентификатор ключа субъекта): уникальный идентификатор открытого ключа субъекта.
- CRL Distribution Points (Точки распространения списков отзыва): URL-адреса, по которым можно получить список отозванных сертификатов (CRL).
- Authority Information Access (Доступ к информации издателя): URL-адреса для получения сертификата УЦ и протокола OCSP (Online Certificate Status Protocol) для проверки статуса сертификата в реальном времени.
Цепочка доверия и удостоверяющие центры
Доверие к сертификату X.509 основывается на иерархической модели доверия. Сертификат субъекта подписан закрытым ключом удостоверяющего центра. Сертификат самого УЦ, в свою очередь, может быть подписан вышестоящим УЦ. Верхушку иерархии образуют корневые удостоверяющие центры (Root CAs). Их сертификаты являются самоподписанными (то есть подписаны собственным закрытым ключом) и распространяются в составе доверенных корневых хранилищ операционных систем и браузеров.
Процесс проверки сертификата включает построение цепочки сертификатов (certificate chain) от сертификата субъекта до доверенного корневого сертификата. На каждом шаге проверяется цифровая подпись нижестоящего сертификата с использованием открытого ключа вышестоящего УЦ.
Типы удостоверяющих центров
- Общедоступные УЦ (Public CAs): коммерческие организации, чьи корневые сертификаты предустановлены в большинстве операционных систем и браузеров (например, Let’s Encrypt, DigiCert, GlobalSign, Sectigo). Они выпускают сертификаты для широкой публики.
- Корпоративные УЦ (Private/Enterprise CAs): развёртываются внутри организаций для выпуска сертификатов для внутренних нужд (аутентификация пользователей в домене, шифрование электронной почты, подпись внутреннего кода). Корневой сертификат такого УЦ распространяется на устройства внутри организации административно.
- Государственные УЦ: создаются в рамках национальных программ электронной подписи и идентификации (например, Минцифры России, УЦ ФНС России).
Форматы хранения и передачи
Сертификаты X.509 обычно кодируются в одном из двух форматов:
- DER (Distinguished Encoding Rules): двоичный формат, используемый для передачи сертификатов в протоколах TLS/SSL.
- PEM (Privacy-Enhanced Mail): текстовое представление DER-данных, закодированных в Base64, с заголовком и подвалом (
-----BEGIN CERTIFICATE-----и-----END CERTIFICATE-----). Широко используется в веб-серверах, почтовых клиентах и конфигурационных файлах.
Для хранения цепочек сертификатов и закрытых ключей используются контейнерные форматы, такие как PKCS#12 (обычно с расширением .p12 или .pfx), которые могут содержать сертификат, цепочку промежуточных УЦ и закрытый ключ, защищённый паролем.
Применение
Защита веб-соединений (TLS/SSL)
Наиболее массовое применение сертификатов X.509 — аутентификация веб-сайтов в протоколе HTTPS. Сертификат веб-сервера, содержащий доменное имя в поле SAN, предъявляется браузеру при установке TLS-соединения. Браузер проверяет цепочку доверия, срок действия и статус отзыва сертификата. Если сертификат действителен, браузер отображает значок замка в адресной строке.
Электронная подпись
В России и других странах сертификаты X.509 используются для создания квалифицированной электронной подписи (КЭП) в соответствии с законодательством (например, Федеральный закон № 63-ФЗ «Об электронной подписи»). Сертификат ключа проверки электронной подписи (СКПЭП) выдаётся аккредитованным удостоверяющим центром и содержит данные о владельце, включая СНИЛС или ИНН.
Аутентификация в сетях
- VPN: сертификаты X.509 используются для взаимной аутентификации клиентов и серверов в протоколах IPsec и OpenVPN.
- Беспроводные сети (Wi-Fi): протокол EAP-TLS использует сертификаты для аутентификации пользователей и устройств в корпоративных сетях.
- Электронная почта: стандарты S/MIME используют сертификаты X.509 для шифрования и подписи сообщений.
Подпись кода
Разработчики программного обеспечения подписывают свои приложения и драйверы сертификатами кода (Code Signing). Операционные системы проверяют подпись перед установкой, что позволяет удостовериться в целостности и подлинности издателя.
Отзыв сертификатов
Сертификат может быть отозван до истечения срока действия по различным причинам (компрометация закрытого ключа, смена реквизитов организации, прекращение деятельности). Для проверки статуса отзыва используются два основных механизма:
- Список отзыва сертификатов (Certificate Revocation List, CRL): периодически публикуемый УЦ список серийных номеров отозванных сертификатов. Клиент загружает CRL и проверяет, не входит ли серийный номер проверяемого сертификата в этот список.
- Протокол проверки статуса сертификата в реальном времени (Online Certificate Status Protocol, OCSP): клиент отправляет запрос OCSP-респондеру (обычно URL указан в расширении Authority Information Access) и получает ответ о статусе сертификата (действителен, отозван, неизвестен). OCSP является более оперативным, чем CRL.
Критика и ограничения
- Сложность управления: развёртывание и обслуживание PKI требует значительных административных усилий, особенно в крупных организациях.
- Уязвимости цепочки доверия: компрометация корневого или промежуточного УЦ ставит под угрозу все сертификаты, выпущенные ниже по цепочке. Известны случаи взлома УЦ (например, DigiNotar в 2011 году), что приводило к выпуску мошеннических сертификатов.
- Проблемы с отзывом: механизмы CRL и OCSP могут быть медленными или недоступными, что создаёт окно уязвимости между моментом отзыва и моментом, когда клиент узнаёт об этом.
- Зависимость от браузеров и ОС: решение о доверии к тому или иному корневому УЦ принимается разработчиками программного обеспечения (браузеров, операционных систем), что создаёт централизованную точку контроля.
- Срок действия: сертификаты имеют ограниченный срок действия (обычно от 1 до 3 лет для веб-сертификатов), что требует регулярного продления.
Источники
- ITU-T Recommendation X.509 (10/2019) — Information technology — Open Systems Interconnection — The Directory: Public-key and attribute certificate frameworks.
- RFC 5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile.
- Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи».
- Методические рекомендации по использованию сертификатов X.509 в инфраструктуре открытых ключей (Минцифры России).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →