4. Описание сертификата и поля «расширения» в сертификате
В данном разделе представлено описание СЕРТ|ОК, которые обеспечивают функциональную совместимость и своё многократное использование в рамках PKI-инфраструктуры. Далее представлен формат СЕРТ|ОК/Х.509v3 и поля «Расширения» в сертификате. Стандарты ISO/IEC и ITU-T используют версию ASN.1-кодирования 1997 года, в данном стандарте используется версия ASN.1-кодирования 1988 года. Но при этом стандарты сертификатов и полей «Расширения» эквивалентны. Кроме того, далее описываются дополнительные субполя поля «Расширения», предназначенные для частного применения, которые востребованы в рамках Х.509/PKI-инфраструктуры в Интернет-сети.
Сертификаты могут использоваться во многих прикладных системах и областях, обеспечивая достижение поставленных целей, связанных с решением проблемы функциональной совместимости, а также удовлетворение требованиям по функциональности и гарантированности. Цель данного документа сформировать, с одной стороны, общую основу для функционирования универсальных прикладных систем, которые требуют широкомасштабной функциональной совместимости, а с другой, — ограниченные требования специального назначения. Соответственно, основной акцент будет сделан на обеспечении использования СЕРТ|ОК/Х.509v3 наиболее востребованных прикладных систем Интернет-сети: электронная почта, IPsec-архитектура и WWW.
4.1. Основные поля сертификата
Основной синтаксис СЕРТ|ОК/Х.509v3 представлен ниже. При вычислении подписи, данные, которые должны быть подписаны, кодируются с использованием особых правил кодирования (distinguished encoding rules — DER) ASN.1-стандарта (Рекомендация ITU-T X.690). DER/ASN.1-кодирование включает дескриптор, размер и систему кодирования значения каждого элемента.
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] Указывается в явном виде, в режиме «по умолчанию» версия v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] Не обязательное поле «Уникальный идентификатор
-- издателя», может указываться, может не указываться
-- если представлено, то версия должна быть v2 или v3
subjectUniqueID [2] Не обязательное поле «Уникальный идентификатор
-- владельца», может указываться, может не указываться
-- если представлено, то версия должна быть v2 или v3
extensions [3] Указывается в явном виде, как дополнительное поле,
-- если представлено, то версия должна быть v3
}
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {
NotBefore Time,
NotAfter Time }
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
Algorithm AlgorithmIdentifier,
SubjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- включает DER-кодировку ASN.1-стандарта,
-- соответствует типу поля «Расширения», определяемого
-- идентификатором «extnID»
}
Далее описываются структура и поля СЕРТ|ОК/Х.509v3 для его использования в Интернет-сети.