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 для его использования в Интернет-сети.