Структура сертификата X.509
Изучите поля цифрового сертификата — субъекта, издателя, срок действия, открытый ключ и расширения — и разберитесь в значении каждого из них.
«Структура сертификата X.509» — бесплатный урок Security+ Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Security+ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Security+ Academy содержит 4 уроков всего.
Что такое X.509 Certificate?
X.509 certificate — это стандартизированный цифровой документ, связывающий открытый ключ с идентификацией. Стандарт X.509 (определённый в RFC 5280) задаёт формат, поля и расширения, используемые в цифровых сертификатах по всему миру. Каждый сертификат TLS/HTTPS, сертификат электронной почты S/MIME, сертификат для подписи кода и сертификат аутентификации клиента соответствует формату X.509. Понимание структуры X.509 certificate помогает читать сведения о сертификатах, диагностировать ошибки сертификатов и принимать обоснованные решения о развёртывании и проверке сертификатов.
# View an X.509 certificate in human-readable form
openssl x509 -in certificate.pem -noout -text
# Or view a website's certificate directly
openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -textVersion, Serial Number и Algorithm
Первые поля X.509 certificate задают его основные идентификационные данные. Version: X.509 v3 — текущий стандарт (в v3 появились расширения). Serial Number: уникальное целое число, присвоенное выпускающим CA и идентифицирующее именно этот сертификат; оно используется в CRL (списках отзыва) для отзыва отдельных сертификатов. Signature Algorithm: задаёт алгоритм, который CA использует для подписи сертификата (например, sha256WithRSAEncryption или ecdsa-with-SHA256). Это поле встречается дважды: в TBSCertificate и во внешней оболочке подписи — значения должны совпадать.
# Certificate header fields
# Version: 3 (v3 = supports extensions)
# Serial Number:
# 30:4b:7e:bf:36:e3:46:a8
# Signature Algorithm: sha256WithRSAEncryption
# The serial number is used for revocation:
# CRL lists serial numbers of revoked certificates from this CAПоля Issuer и Subject
Два важнейших поля сертификата задают сведения об участвующих сторонах. Поле Issuer указывает CA, подписавший сертификат (например, CN=DigiCert Global CA G2, O=DigiCert Inc, C=US). Поле Subject указывает объект, которому выдан сертификат (например, CN=*.example.com, O=Example Corp, C=US). Для сертификата TLS расширение Common Name (CN) или Subject Alternative Name (SAN) в Subject задаёт доменное имя или имена, для которых действителен сертификат. Браузеры сопоставляют запрошенное имя узла с этими полями.
# Extract Issuer and Subject
openssl x509 -in cert.pem -noout -subject -issuer
# subject=CN = *.google.com, O = Google LLC, L = Mountain View, ST = California, C = US
# issuer=CN = GTS CA 1C3, O = Google Trust Services LLC, C = US
# Check Subject Alternative Names (critical for hostname validation)
openssl x509 -in cert.pem -noout -ext subjectAltName
# DNS:*.google.com, DNS:google.comПериод действия: notBefore и notAfter
Период действия определяет, когда сертификат активен. Он состоит из двух временных меток: notBefore (до этой даты сертификат ещё недействителен) и notAfter (после этой даты срок действия сертификата истёк). Клиенты TLS проверяют, попадает ли текущее время в этот интервал. Сертификаты, предъявленные за пределами периода действия, вызывают ошибку сертификата в браузерах и должны быть заменены. Современная рекомендуемая практика — выпускать сертификаты с коротким сроком действия (90 дней, как это делает Let's Encrypt), чтобы ограничить последствия компрометации закрытого ключа в период между выпуском и окончанием срока действия.
# Check certificate expiry dates
openssl x509 -in cert.pem -noout -dates
# notBefore=Jan 1 00:00:00 2026 GMT
# notAfter=Mar 31 23:59:59 2026 GMT
# Check how many days until expiry
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -enddate
# notAfter=Jun 15 12:00:00 2026 GMTПоле открытого ключа
Основная часть сертификата — поле Subject Public Key Info, содержащее удостоверяемый открытый ключ и задающее алгоритм, с которым он используется. В сертификате RSA это поле содержит модуль и экспоненту открытого ключа RSA, а также его длину в битах (2048, 4096). В сертификате ECC оно содержит имя кривой (например, prime256v1) и точку открытого ключа. CA не генерирует эту пару ключей — запрашивающая сторона создаёт собственную пару ключей и передаёт в Certificate Signing Request (CSR) только открытый ключ.
# Generate a key pair and CSR (Certificate Signing Request)
# First, generate the private key
openssl genrsa -out server.key 2048
# Create a CSR containing the public key and subject info
openssl req -new -key server.key -out server.csr \
-subj '/CN=www.example.com/O=Example Corp/C=US'
# The CSR is sent to the CA for signing
# The CA returns the signed X.509 certificate
# Private key NEVER leaves your possessionРасширения X.509 v3
В X.509 v3 появились расширения, значительно расширяющие возможности сертификатов. Расширения могут быть критическими (клиент, не умеющий обработать такое расширение, должен отклонить сертификат) или некритическими (их можно игнорировать, если они не распознаны). К основным расширениям относятся: Subject Alternative Name (SAN) — дополнительные доменные имена или IP-адреса, охватываемые сертификатом; Key Usage — ограничивает операции, для которых можно использовать ключ (цифровая подпись, шифрование ключа); Extended Key Usage — дополнительно ограничивает назначение (аутентификация сервера TLS, аутентификация клиента, подписание кода); и Basic Constraints — указывает, является ли Subject центром сертификации.
# View X.509 v3 extensions
openssl x509 -in cert.pem -noout -text | grep -A 20 'X509v3 extensions'
# X509v3 Key Usage: critical
# Digital Signature, Key Encipherment
# X509v3 Extended Key Usage:
# TLS Web Server Authentication, TLS Web Client Authentication
# X509v3 Subject Alternative Name:
# DNS:example.com, DNS:www.example.com
# X509v3 Basic Constraints: critical
# CA:FALSESubject Alternative Name (SAN) и Common Name
Исторически поле Common Name (CN) в поле Subject использовалось для указания основного доменного имени. В современных сертификатах вместо него используются Subject Alternative Names (SANs), поскольку браузеры отказались от сопоставления на основе CN (RFC 2818) в пользу SAN. SAN позволяет одному сертификату охватывать несколько доменов (сертификаты с несколькими SAN) или все поддомены домена (сертификаты с подстановочным знаком: *.example.com). Подстановочные знаки SAN охватывают только один уровень: *.example.com охватывает www.example.com, но не sub.www.example.com.
Точка распространения CRL и расширение OCSP
Два важных расширения сообщают клиентам, как проверить, не был ли сертификат отозван до окончания срока его действия. CRL Distribution Points (CDP): содержит URL-адреса, по которым можно скачать Certificate Revocation List CA. Authority Information Access (AIA): содержит URL-адрес обработчика OCSP (Online Certificate Status Protocol) CA для проверки отзыва в реальном времени. Современные клиенты предпочитают OCSP загрузке CRL, поскольку CRL могут быть большими файлами. Цифровая подпись CA в ответах OCSP гарантирует клиентам получение подлинных сведений о статусе отзыва.
# Check OCSP status of a certificate
openssl ocsp -issuer intermediate_ca.pem \
-cert server_cert.pem \
-url http://ocsp.digicert.com \
-text
# Response shows: good, revoked, or unknown
# server_cert.pem: good
# This Update: Jun 21 00:00:00 2026 GMTФорматы сертификатов: PEM, DER, PFX
Сертификаты X.509 встречаются в нескольких форматах кодирования, с которыми Вы столкнётесь на практике. PEM (Privacy Enhanced Mail): DER в кодировке base64, заключённый в заголовки -----BEGIN CERTIFICATE-----. Удобен для чтения, используется в Linux/Apache/nginx. DER (Distinguished Encoding Rules): двоичный формат. Используется в приложениях Java и в некоторых средах Windows. PFX/PKCS#12: формат контейнера, объединяющий сертификат, его цепочку и закрытый ключ в одном защищённом паролем файле. Используется в Windows IIS и при экспорте сертификатов вместе с закрытыми ключами. P7B/PKCS#7: только цепочка сертификатов, без закрытого ключа; используется в хранилищах сертификатов Windows.
# Convert between certificate formats
# PEM to DER
openssl x509 -in cert.pem -outform DER -out cert.der
# DER to PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem
# Export certificate + private key to PFX (for Windows IIS)
openssl pkcs12 -export -in cert.pem -inkey private.key \
-certfile chain.pem -out cert.pfx -passout pass:ExportPasswordCertificate Transparency (журналы CT)
Certificate Transparency (CT) — это система, требующая от CA заносить все выданные сертификаты в общедоступные журналы, доступные для аудита. Благодаря этому любой желающий может отслеживать несанкционированные сертификаты, выданные для его доменов. Chrome и Safari требуют включения сертификатов TLS в журналы CT. SCT (Signed Certificate Timestamp) — доказательство включения в журнал, встроенное в сертификат или передаваемое через расширение TLS. Журналы CT быстро выявляют ошибочный выпуск: если CA неправильно выдаст сертификат для Вашего домена, Вы увидите его в таких журналах, как crt.sh, ещё до того, как злоумышленники смогут им воспользоваться.
# Search for all certificates issued for a domain using crt.sh
# This would be done via browser or API:
# https://crt.sh/?q=example.com
# Check CT log inclusion in a certificate
openssl x509 -in cert.pem -noout -text | grep -A 5 'CT Precertificate'
# X509v3 extension: CT Precertificate SCTs (critical)
# Signed Certificate Timestamp:
# Version: v1 (0x0)
# Log ID: A4:B9...Подпись CA на сертификате
Последний компонент X.509 certificate — это цифровая подпись CA. CA вычисляет хеш всех данных сертификата (TBSCertificate) и подписывает этот хеш собственным закрытым ключом. Именно эта подпись делает сертификат доверенным: любой желающий может проверить её с помощью открытого ключа CA, содержащегося в собственном сертификате CA. Использованный алгоритм подписи, указанный в поле подписи, должен совпадать с алгоритмом, заданным ранее в сертификате. Любое изменение сертификата после подписания делает подпись недействительной и тем самым обеспечивает целостность сертификата.
# Verify that a certificate was signed by a specific CA
openssl verify -CAfile ca_chain.pem server_cert.pem
# server_cert.pem: OK
# If the signature is invalid or the chain is broken:
# server_cert.pem: C = US, O = Example, CN = www.example.com
# error 20 at 0 depth lookup: unable to get local issuer certificateБыстрая Check
Проверьте, насколько хорошо Вы понимаете концепции CompTIA Security+ (SY0-701) из этого урока.
Итоги урока
В этом уроке Вы узнали: X.509 certificate содержит version, serial number, issuer, subject, validity period, public key и расширения v3; расширение SAN определяет, какие имена узлов охватывает сертификат; расширения CDP и AIA указывают конечные точки проверки отзыва; а журналы CT обеспечивают общедоступные аудиторские следы выпуска сертификатов. Далее мы рассмотрим жизненный цикл и отзыв Certificate.
Часто задаваемые вопросы
Урок «Структура сертификата X.509» бесплатный?
Да — полный текст урока «Структура сертификата X.509» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Security+ Academy, подпишись на CoddyKit PRO. Курс Security+ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Структура сертификата X.509»?
Изучите поля цифрового сертификата — субъекта, издателя, срок действия, открытый ключ и расширения — и разберитесь в значении каждого из них. Ты практикуешь Security+ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Security+ Academy?
Предыдущий опыт не требуется. Security+ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Структура сертификата X.509»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Security+ Academy?
Да. Каждый урок Security+ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Центры сертификации и цепочки доверия
- Структура сертификата X.509
- Жизненный цикл и отзыв сертификатов
- Сценарии применения PKI: HTTPS, S/MIME и подпись кода