Network Working Group Request for Comments: 4523 Категория: Standards Track K. Zeilenga, OpenLDAP Foundation Июнь 2006 года Отменяет: 2252, 2256, 2587
Этот документ определяет проект стандарта протокола Интернет для сообщества Интернет, а также приглашает к обсуждению и подаче предложений по его усовершенствованию. Пожалуйста, сверяйтесь с текущей редакцией "Официальных стандартов протоколов Интернет" (STD 1), чтобы узнать состояние стандартизации и статус этого протокола. Ограничений на распространение данного документа не накладывается.
Copyright (C) Internet Society (2006).
В этом документе описывается схема данных для представления сертификатов X.509, элементов стандарта X.521, относящихся к защите информации, и других связанных элементов в каталогах, доступ к которым осуществляется с использованием протокола Lightweight Directory Access Protocol (LDAP). Приводимые в этом документе LDAP-определения для элементов схемы данных X.509 и X.521 заменяют те определения, которые были представлены в RFC 2252 и 2256.
В этом документе предоставляются определения схемы данных [RFC4512] LDAP [RFC4510] для подмножества элементов, определённых в стандартах X.509 [X.509] и X.521 [X.521], в том числе типы атрибутов для сертификатов, пар перекрёстных сертификатов и списков отзывов сертификатов, правила соответствия для использования с этими типами атрибутов, а также относящиеся к ним объектные классы. Также предоставляются определения синтаксисов LDAP для связанных значений утверждений и атрибутов.
Поскольку семантики этих элементов определены в X.509 и X.521, знание X.509 и X.521 необходимо для использования представленных здесь определений схемы данных LDAP.
Этот документ совместно с [RFC4510] полностью отменяет RFC 2252 и 2256. Внесённые в этом документе изменения относительно RFC 2252 и RFC 2256 включают:
Этот документ отменяет RFC 2587. Определения схемы данных X.509 для LDAPv2 [RFC1777] объявлены историческими так же, как и сам протокол LDAPv2 [RFC3494].
Ключевые слова "MUST" (необходимо), "MUST NOT" (недопустимо), "REQUIRED" (требуется), "SHALL" (нужно), "SHALL NOT" (не нужно), "SHOULD" (следует), "SHOULD NOT" (не следует), "RECOMMENDED" (рекомендуется), "MAY" (возможно) и "OPTIONAL" (необязательно) в данном документе должны интерпретироваться так, как описано в BCP 14 [RFC2119].
Определения схемы данных приводятся в форматах описания LDAP [RFC4512]. Приведённые здесь определения отформатированы (разбиты на строки) для улучшения читабельности.
В этом разделе описаны различные синтаксисы, используемые в LDAP для передачи сертификатов и связанных с ними типов данных.
( 1.3.6.1.4.1.1466.115.121.1.8 DESC 'X.509 Certificate' )
Значение данного синтаксиса представляет собой конструкцию Certificate из стандарта X.509 [X.509, раздел 7].
В связи с тем, что в определение конструкции Certificate периодически вносятся изменения, для этого синтаксиса не предусмотрена специфичная для LDAP кодировка. Значения с этим синтаксисом следует (SHOULD) кодировать с использованием Особых правил кодирования (Distinguished Encoding Rules, DER) [X.690], и они должны (MUST) передаваться только с использованием опции передачи ;binary [RFC4522]; то есть значения должны запрашиваться и возвращаться с использованием описаний атрибутов в виде "userCertificate;binary".
Поскольку значения этого синтаксиса содержат данные, подписанные цифровой подписью, такие значения, а также форма каждого из них, должны (MUST) быть сохранены в том виде, в котором они представлены.
( 1.3.6.1.4.1.1466.115.121.1.9 DESC 'X.509 Certificate List' )
Значение данного синтаксиса представляет собой конструкцию CertificateList из стандарта X.509 [X.509, раздел 7.3].
В связи с тем, что в определение конструкции CertificateList периодически вносятся изменения, для этого синтаксиса не предусмотрена специфичная для LDAP кодировка. Значения с этим синтаксисом следует (SHOULD) кодировать с использованием DER [X.690], и они должны (MUST) передаваться только с использованием опции передачи ;binary [RFC4522]; то есть значения должны запрашиваться и возвращаться с использованием описаний атрибутов в виде "certificateRevocationList;binary".
Поскольку значения этого синтаксиса содержат данные, подписанные цифровой подписью, такие значения, а также форма каждого из них, должны (MUST) быть сохранены в том виде, в котором они представлены.
( 1.3.6.1.4.1.1466.115.121.1.10 DESC 'X.509 Certificate Pair' )
Значение данного синтаксиса представляет собой конструкцию CertificatePair из стандарта X.509 [X.509, раздел 11.2.3].
В связи с тем, что в определение конструкции X.509 CertificatePair периодически вносятся изменения, для этого синтаксиса не предусмотрена специфичная для LDAP кодировка. Значения с этим синтаксисом следует (SHOULD) кодировать с использованием DER [X.690], и они должны (MUST) передаваться только с использованием опции передачи ;binary [RFC4522]; то есть значения должны запрашиваться и возвращаться с использованием описаний атрибутов в виде "crossCertificatePair;binary".
Поскольку значения этого синтаксиса содержат данные, подписанные цифровой подписью, такие значения, а также форма каждого из них, должны (MUST) быть сохранены в том виде, в котором они представлены.
( 1.3.6.1.4.1.1466.115.121.1.49
DESC 'X.509 Supported Algorithm' )
Значение данного синтаксиса представляет собой конструкцию SupportedAlgorithm из стандарта X.509 [X.509, раздел 11.2.7].
В связи с тем, что в определение конструкции X.509 SupportedAlgorithm периодически вносятся изменения, для этого синтаксиса не предусмотрена специфичная для LDAP кодировка. Значения с этим синтаксисом следует (SHOULD) кодировать с использованием DER [X.690], и они должны (MUST) передаваться только с использованием опции передачи ;binary [RFC4522]; то есть значения должны запрашиваться и возвращаться с использованием описаний атрибутов в виде "supportedAlgorithms;binary".
Поскольку значения этого синтаксиса содержат данные, подписанные цифровой подписью, такие значения, а также форма каждого из них, должны (MUST) быть сохранены в том виде, в котором они представлены.
( 1.3.6.1.1.15.1 DESC 'X.509 Certificate Exact Assertion' )
Значение данного синтаксиса представляет собой конструкцию CertificateExactAssertion из стандарта X.509 [X.509, раздел 11.3.1]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием Общих правил кодирования строк (Generic String Encoding Rules, GSER) [RFC3641]. В приложении A.1 представлен эквивалент данного синтаксиса в виде грамматики, описанной в Расширенной форме Бэкуса-Наура (Augmented Backus-Naur Form, ABNF) [RFC4234].
( 1.3.6.1.1.15.2 DESC 'X.509 Certificate Assertion' )
Значение данного синтаксиса представляет собой конструкцию CertificateAssertion из стандарта X.509 [X.509, раздел 11.3.2]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием GSER [RFC3641]. В приложении A.2 представлен эквивалент данного синтаксиса в виде грамматики, описанной в ABNF [RFC4234].
( 1.3.6.1.1.15.3
DESC 'X.509 Certificate Pair Exact Assertion' )
Значение данного синтаксиса представляет собой конструкцию CertificatePairExactAssertion из стандарта X.509 [X.509, раздел 11.3.3]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием GSER [RFC3641]. В приложении A.3 представлен эквивалент данного синтаксиса в виде грамматики, описанной в ABNF [RFC4234].
( 1.3.6.1.1.15.4 DESC 'X.509 Certificate Pair Assertion' )
Значение данного синтаксиса представляет собой конструкцию CertificatePairAssertion из стандарта X.509 [X.509, раздел 11.3.4]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием GSER [RFC3641]. В приложении A.4 представлен эквивалент данного синтаксиса в виде грамматики, описанной в ABNF [RFC4234].
( 1.3.6.1.1.15.5
DESC 'X.509 Certificate List Exact Assertion' )
Значение данного синтаксиса представляет собой конструкцию CertificateListExactAssertion из стандарта X.509 [X.509, раздел 11.3.5]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием GSER [RFC3641]. В приложении A.5 представлен эквивалент данного синтаксиса в виде грамматики, описанной в ABNF.
( 1.3.6.1.1.15.6 DESC 'X.509 Certificate List Assertion' )
Значение данного синтаксиса представляет собой конструкцию CertificateListAssertion из стандарта X.509 [X.509, раздел 11.3.6]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием GSER [RFC3641]. В приложении A.6 представлен эквивалент данного синтаксиса в виде грамматики, описанной в ABNF [RFC4234].
( 1.3.6.1.1.15.7 DESC 'X.509 Algorithm Identifier' )
Значение данного синтаксиса представляет собой конструкцию AlgorithmIdentifier из стандарта X.509 [X.509, раздел 7]. Значения с этим синтаксисом должны (MUST) быть закодированы с использованием GSER [RFC3641]. В приложении A.7 представлен эквивалент данного синтаксиса в виде грамматики, описанной в ABNF [RFC4234].
В этом разделе представлен набор правил соответствия для использования в LDAP, применяемых к сертификатам и связанным с ними типам данных. Применение данных правил должно соответствовать применению их аналогов из стандарта X.500.
Правило соответствия certificateExactMatch сравнивает на предмет точного совпадения представленное значение утверждения сертификата со значением атрибута с синтаксисом сертификата, как описано в разделе 11.3.1 стандарта [X.509].
( 2.5.13.34 NAME 'certificateExactMatch'
DESC 'X.509 Certificate Exact Match'
SYNTAX 1.3.6.1.1.15.1 )
Правило соответствия certificateMatch сравнивает представленное значение утверждения сертификата со значением атрибута с синтаксисом сертификата, как описано в разделе 11.3.2 стандарта [X.509].
( 2.5.13.35 NAME 'certificateMatch'
DESC 'X.509 Certificate Match'
SYNTAX 1.3.6.1.1.15.2 )
Правило соответствия certificatePairExactMatch сравнивает на предмет точного совпадения представленное значение утверждения пары сертификатов со значением атрибута с синтаксисом пары сертификатов, как описано в разделе 11.3.3 стандарта [X.509].
( 2.5.13.36 NAME 'certificatePairExactMatch'
DESC 'X.509 Certificate Pair Exact Match'
SYNTAX 1.3.6.1.1.15.3 )
Правило соответствия certificatePairMatch сравнивает представленное значение утверждения пары сертификатов со значением атрибута с синтаксисом пары сертификатов, как описано в разделе 11.3.4 стандарта [X.509].
( 2.5.13.37 NAME 'certificatePairMatch'
DESC 'X.509 Certificate Pair Match'
SYNTAX 1.3.6.1.1.15.4 )
Правило соответствия certificateListExactMatch сравнивает на предмет точного совпадения представленное значение утверждения списка сертификатов со значением атрибута с синтаксисом списка сертификатов, как описано в разделе 11.3.5 стандарта [X.509].
( 2.5.13.38 NAME 'certificateListExactMatch'
DESC 'X.509 Certificate List Exact Match'
SYNTAX 1.3.6.1.1.15.5 )
Правило соответствия certificateListMatch сравнивает представленное значение утверждения списка сертификатов со значением атрибута с синтаксисом списка сертификатов, как описано в разделе 11.3.6 стандарта [X.509].
( 2.5.13.39 NAME 'certificateListMatch'
DESC 'X.509 Certificate List Match'
SYNTAX 1.3.6.1.1.15.6 )
Правило соответствия algorithmIdentifierMatch сравнивает представленный идентификатор алгоритма со значением атрибута идентификатора поддерживаемого алгоритма, как описано в разделе 11.3.7 стандарта [X.509].
( 2.5.13.40 NAME 'algorithmIdentifierMatch'
DESC 'X.509 Algorithm Identifier Match'
SYNTAX 1.3.6.1.1.15.7 )
В этом разделе описан набор типов атрибутов сертификатов и связанных с ними типов данных для использования в LDAP.
В атрибуте userCertificate содержатся сертификаты X.509, выданные пользователю одним или несколькими удостоверяющими центрами, как описано в разделе 11.2.1 стандарта [X.509].
( 2.5.4.36 NAME 'userCertificate'
DESC 'X.509 user certificate'
EQUALITY certificateExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута запрашиваются и передаются с использованием описания атрибута "userCertificate;binary".
В атрибуте cACertificate содержатся сертификаты X.509, выданные удостоверяющему центру (УЦ), как описано в разделе 11.2.2 стандарта [X.509].
( 2.5.4.37 NAME 'cACertificate'
DESC 'X.509 CA certificate'
EQUALITY certificateExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута запрашиваются и передаются с использованием описания атрибута "cACertificate;binary".
В атрибуте crossCertificatePair содержатся пары сертификатов X.509, как описано в разделе 11.2.3 стандарта [X.509].
( 2.5.4.40 NAME 'crossCertificatePair'
DESC 'X.509 cross certificate pair'
EQUALITY certificatePairExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута запрашиваются и передаются с использованием описания атрибута "crossCertificatePair;binary".
В атрибуте certificateRevocationList содержатся списки сертификатов, как описано в разделе 11.2.4 стандарта [X.509].
( 2.5.4.39 NAME 'certificateRevocationList'
DESC 'X.509 certificate revocation list'
EQUALITY certificateListExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута запрашиваются и передаются с использованием описания атрибута "certificateRevocationList;binary".
В атрибуте authorityRevocationList содержатся списки сертификатов, как описано в разделе 11.2.5 стандарта [X.509].
( 2.5.4.38 NAME 'authorityRevocationList'
DESC 'X.509 authority revocation list'
EQUALITY certificateListExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута запрашиваются и передаются с использованием описания атрибута "authorityRevocationList;binary".
В атрибуте deltaRevocationList содержатся списки сертификатов, как описано в разделе 11.2.6 стандарта [X.509].
( 2.5.4.53 NAME 'deltaRevocationList'
DESC 'X.509 delta revocation list'
EQUALITY certificateListExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута должны (MUST) запрашиваться и передаваться с использованием описания атрибута "deltaRevocationList;binary".
В атрибуте supportedAlgorithms содержатся поддерживаемые алгоритмы, как описано в разделе 11.2.7 стандарта [X.509].
( 2.5.4.52 NAME 'supportedAlgorithms'
DESC 'X.509 supported algorithms'
EQUALITY algorithmIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
Согласно требованиям синтаксиса данного типа атрибута, значения такого атрибута должны (MUST) запрашиваться и передаваться с использованием описания атрибута "supportedAlgorithms;binary".
В этом разделе описан набор связанных с сертификатами объектных классов для использования в LDAP.
Данный объектный класс используется для дополнения записей объектов, которые могут быть субъектами сертификатов, как определено в разделе 11.1.1 стандарта [X.509].
( 2.5.6.21 NAME 'pkiUser'
DESC 'X.509 PKI User'
SUP top AUXILIARY
MAY userCertificate )
Данный объектный класс используется для дополнения записей объектов, которые действуют как удостоверяющие центры, как определено в разделе 11.1.2 стандарта [X.509]
( 2.5.6.22 NAME 'pkiCA'
DESC 'X.509 PKI Certificate Authority'
SUP top AUXILIARY
MAY ( cACertificate $ certificateRevocationList $
authorityRevocationList $ crossCertificatePair ) )
Данный класс используется для представления объектов, которые действуют как точки распространения CRL, как определено в разделе 11.1.3 стандарта [X.509].
( 2.5.6.19 NAME 'cRLDistributionPoint'
DESC 'X.509 CRL distribution point'
SUP top STRUCTURAL
MUST cn
MAY ( certificateRevocationList $
authorityRevocationList $ deltaRevocationList ) )
Объектный класс deltaCRL используется для дополнения записей, которые содержат дельта-списки отзыва сертификатов, как определено в разделе 11.1.4 стандарта [X.509].
( 2.5.6.23 NAME 'deltaCRL'
DESC 'X.509 delta CRL'
SUP top AUXILIARY
MAY deltaRevocationList )
Данный объектный класс используется для дополнения записей объектов, участвующих в аутентификации на основе сертификатов, как определено в разделе 6.15 стандарта [X.521]. Этот объектный класс является устаревшим в пользу pkiUser.
( 2.5.6.15 NAME 'strongAuthenticationUser'
DESC 'X.521 strong authentication user'
SUP top AUXILIARY
MUST userCertificate )
Данный объектный класс используется для дополнения записей необходимой дополнительной информацией о безопасности, как определено в разделе 6.16 стандарта [X.521].
( 2.5.6.18 NAME 'userSecurityInformation'
DESC 'X.521 user security information'
SUP top AUXILIARY
MAY ( supportedAlgorithms ) )
Данный объектный класс используется для дополнения записей объектов, которые действуют как удостоверяющие центры, как определено в разделе 6.17 стандарта [X.521]. Этот объектный класс является устаревшим в пользу pkiCA.
( 2.5.6.16 NAME 'certificationAuthority'
DESC 'X.509 certificate authority'
SUP top AUXILIARY
MUST ( authorityRevocationList $
certificateRevocationList $ cACertificate )
MAY crossCertificatePair )
Данный объектный класс используется для дополнения записей объектов, которые действуют как удостоверяющие центры, как определено в разделе 6.18 стандарта [X.521]. Этот объектный класс является устаревшим в пользу pkiCA.
( 2.5.6.16.2 NAME 'certificationAuthority-V2'
DESC 'X.509 certificate authority, version 2'
SUP certificationAuthority AUXILIARY
MAY deltaRevocationList )
К приложениям для работы с сертификатами с поддержкой LDAP применяются общие положения о сертификатах [RFC3280]. Также к ним применяются общие соображения безопасности LDAP [RFC4510].
Хотя элементы данных сертификата обычно подписаны электронной подписью, эти подписи защищают только целостность подписанной информации. В отсутствие защиты целостности данных на уровне протокола LDAP (или более низких уровнях, например, IPsec), сервер не может полагаться на то, что поступивший от клиента запрос сертификата (или любой другой запрос) не был изменён при передаче. Также и клиент не может полагаться на то, что результаты запроса не были изменены при передаче. Поэтому, как правило, рекомендуется, чтобы реализации данного стандарта использовали имеющиеся в LDAP сервисы аутентификации и обеспечения целостности данных [RFC4513][RFC4511].
IANA зарегистрировала идентификатор объекта LDAP [RFC4520] для использования в данной технической спецификации.
Subject: Request for LDAP OID Registration
Person & email address to contact for further information:
Kurt Zeilenga <kurt@OpenLDAP.org>
Specification: RFC 4523
Author/Change Controller: IESG
Comments:
Identifies the LDAP X.509 Certificate schema elements
introduced in this document.
IANA обновила реестр дескрипторов LDAP [RFC4520], как показано ниже.
Subject: Request for LDAP Descriptor Registration
Descriptor (short name): see table
Object Identifier: see table
Person & email address to contact for further information:
Kurt Zeilenga <kurt@OpenLDAP.org>
Usage: see table
Specification: RFC 4523
Author/Change Controller: IESG
algorithmIdentifierMatch M 2.5.13.40
authorityRevocationList A 2.5.4.38 *
cACertificate A 2.5.4.37 *
cRLDistributionPoint O 2.5.6.19 *
certificateExactMatch M 2.5.13.34
certificateListExactMatch M 2.5.13.38
certificateListMatch M 2.5.13.39
certificateMatch M 2.5.13.35
certificatePairExactMatch M 2.5.13.36
certificatePairMatch M 2.5.13.37
certificateRevocationList A 2.5.4.39 *
certificationAuthority O 2.5.6.16 *
certificationAuthority-V2 O 2.5.6.16.2 *
crossCertificatePair A 2.5.4.40 *
deltaCRL O 2.5.6.23 *
deltaRevocationList A 2.5.4.53 *
pkiCA O 2.5.6.22 *
pkiUser O 2.5.6.21 *
strongAuthenticationUser O 2.5.6.15 *
supportedAlgorithms A 2.5.4.52 *
userCertificate A 2.5.4.36 *
userSecurityInformation O 2.5.6.18 *
* Updates previous registration
Этот документ основан на стандарте X.509, который является продуктом ITU-T. Ряд определений схемы данных LDAP был сформирован на основе определений из RFC 2252 и 2256, оба продукта рабочей группы ASID IETF. Конструкции ABNF в приложении A предоставлены Steven Legg. Дополнительный материал для уточнения схемы данных LDAP, касающейся X.509, был заимствован из предыдущих работ David Chadwick и Steven Legg.
[RFC2119] Bradner, S., "Ключевые слова для обозначения уровня требований в RFC", BCP 14, RFC 2119, март 1997 г.
[RFC3641] Legg, S., "Generic String Encoding Rules (GSER) for ASN.1 Types", RFC 3641, октябрь 2003 г.
[RFC4510] Под редакцией Zeilenga, K., "Lightweight Directory Access Protocol (LDAP): Путеводитель по технической спецификации", RFC 4510, июнь 2006 г.
[RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol (LDAP): Информационные модели каталога", RFC 4512, июнь 2006 г.
[RFC4522] Legg, S., "Lightweight Directory Access Protocol (LDAP): Опция двоичного кодирования", RFC 4522, июнь 2006 г.
[X.509] International Telecommunication Union - Telecommunication Standardization Sector, "The Directory: Authentication Framework", X.509(2000).
[X.521] International Telecommunication Union - Telecommunication Standardization Sector, "The Directory: Selected Object Classes", X.521(2000).
[X.690] International Telecommunication Union - Telecommunication Standardization Sector, "Specification of ASN.1 encoding rules: Basic Encoding Rules (BER), Canonical Encoding Rules (CER), and Distinguished Encoding Rules (DER)", X.690(2002) (also ISO/IEC 8825-1:2002).
[RFC1777] Yeong, W., Howes, T. и S. Kille, "Lightweight Directory Access Protocol", RFC 1777, март 1995 г.
[RFC2156] Kille, S., "MIXER (Mime Internet X.400 Enhanced Relay): Mapping between X.400 and RFC 822/MIME", RFC 2156, январь 1998 г.
[RFC3280] Housley, R., Polk, W., Ford, W. и D. Solo, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3280, апрель 2002 г.
[RFC3494] Zeilenga, K., "Lightweight Directory Access Protocol version 2 (LDAPv2) to Historic Status", RFC 3494, март 2003 г.
[RFC3642] Legg, S., "Common Elements of Generic String Encoding Rules (GSER) Encodings", RFC 3642, октябрь 2003 г.
[RFC4234] Crocker, D. и P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, октябрь 2005 г.
[RFC4511] Под редакцией Sermersheim, J., "Lightweight Directory Access Protocol (LDAP): Определение протокола", RFC 4511, июнь 2006 г.
[RFC4513] Под редакцией Harrison, R., "Lightweight Directory Access Protocol (LDAP): Методы аутентификации и механизмы обеспечения безопасности", RFC 4513, июнь 2006 г.
[RFC4520] Zeilenga, K., "Соглашения Internet Assigned Numbers Authority (IANA) для протокола Lightweight Directory Access Protocol (LDAP)", BCP 64, RFC 4520, июнь 2006 г.
Данное приложение является информативным.
В этом приложении приводятся грамматики ABNF [RFC4234] для определённых в данном документе основанных на GSER [RFC3641] специфичных для LDAP кодировок. Эти грамматики были сформированы с использованием общих элементов для кодировок GSER [RFC3642].
CertificateExactAssertion = "{" sp cea-serialNumber ","
sp cea-issuer sp "}"
cea-serialNumber = id-serialNumber msp CertificateSerialNumber
cea-issuer = id-issuer msp Name
id-serialNumber =
%x73.65.72.69.61.6C.4E.75.6D.62.65.72 ; 'serialNumber'
id-issuer = %x69.73.73.75.65.72 ; 'issuer'
Name = id-rdnSequence ":" RDNSequence
id-rdnSequence = %x72.64.6E.53.65.71.75.65.6E.63.65 ; 'rdnSequence'
CertificateSerialNumber = INTEGER
CertificateAssertion = "{" [ sp ca-serialNumber ]
[ sep sp ca-issuer ]
[ sep sp ca-subjectKeyIdentifier ]
[ sep sp ca-authorityKeyIdentifier ]
[ sep sp ca-certificateValid ]
[ sep sp ca-privateKeyValid ]
[ sep sp ca-subjectPublicKeyAlgID ]
[ sep sp ca-keyUsage ]
[ sep sp ca-subjectAltName ]
[ sep sp ca-policy ]
[ sep sp ca-pathToName ]
[ sep sp ca-subject ]
[ sep sp ca-nameConstraints ] sp "}"
ca-serialNumber = id-serialNumber msp CertificateSerialNumber
ca-issuer = id-issuer msp Name
ca-subjectKeyIdentifier = id-subjectKeyIdentifier msp
SubjectKeyIdentifier
ca-authorityKeyIdentifier = id-authorityKeyIdentifier msp
AuthorityKeyIdentifier
ca-certificateValid = id-certificateValid msp Time
ca-privateKeyValid = id-privateKeyValid msp GeneralizedTime
ca-subjectPublicKeyAlgID = id-subjectPublicKeyAlgID msp
OBJECT-IDENTIFIER
ca-keyUsage = id-keyUsage msp KeyUsage
ca-subjectAltName = id-subjectAltName msp AltNameType
ca-policy = id-policy msp CertPolicySet
ca-pathToName = id-pathToName msp Name
ca-subject = id-subject msp Name
ca-nameConstraints = id-nameConstraints msp NameConstraintsSyntax
id-subjectKeyIdentifier =
%x73.75.62.6A.65.63.74.4B.65.79.49.64.65.6E.74.69.66.69.65.72
; 'subjectKeyIdentifier'
id-authorityKeyIdentifier =
%x61.75.74.68.6F.72.69.74.79.4B.65.79.49.64.65.6E.74.69.66.69.65.72
; 'authorityKeyIdentifier'
id-certificateValid = %x63.65.72.74.69.66.69.63.61.74.65.56.61.6C.69.64
; 'certificateValid'
id-privateKeyValid = %x70.72.69.76.61.74.65.4B.65.79.56.61.6C.69.64
; 'privateKeyValid'
id-subjectPublicKeyAlgID =
%x73.75.62.6A.65.63.74.50.75.62.6C.69.63.4B.65.79.41.6C.67.49.44
; 'subjectPublicKeyAlgID'
id-keyUsage = %x6B.65.79.55.73.61.67.65 ; 'keyUsage'
id-subjectAltName = %x73.75.62.6A.65.63.74.41.6C.74.4E.61.6D.65
; 'subjectAltName'
id-policy = %x70.6F.6C.69.63.79 ; 'policy'
id-pathToName = %x70.61.74.68.54.6F.4E.61.6D.65 ; 'pathToName'
id-subject = %x73.75.62.6A.65.63.74 ; 'subject'
id-nameConstraints = %x6E.61.6D.65.43.6F.6E.73.74.72.61.69.6E.74.73
; 'nameConstraints'
SubjectKeyIdentifier = KeyIdentifier
KeyIdentifier = OCTET-STRING
AuthorityKeyIdentifier = "{" [ sp aki-keyIdentifier ]
[ sep sp aki-authorityCertIssuer ]
[ sep sp aki-authorityCertSerialNumber ] sp "}"
aki-keyIdentifier = id-keyIdentifier msp KeyIdentifier
aki-authorityCertIssuer = id-authorityCertIssuer msp GeneralNames
GeneralNames = "{" sp GeneralName *( "," sp GeneralName ) sp "}"
GeneralName = gn-otherName
/ gn-rfc822Name
/ gn-dNSName
/ gn-x400Address
/ gn-directoryName
/ gn-ediPartyName
/ gn-uniformResourceIdentifier
/ gn-iPAddress
/ gn-registeredID
gn-otherName = id-otherName ":" OtherName
gn-rfc822Name = id-rfc822Name ":" IA5String
gn-dNSName = id-dNSName ":" IA5String
gn-x400Address = id-x400Address ":" ORAddress
gn-directoryName = id-directoryName ":" Name
gn-ediPartyName = id-ediPartyName ":" EDIPartyName
gn-iPAddress = id-iPAddress ":" OCTET-STRING
gn-registeredID = gn-id-registeredID ":" OBJECT-IDENTIFIER
gn-uniformResourceIdentifier = id-uniformResourceIdentifier
":" IA5String
id-otherName = %x6F.74.68.65.72.4E.61.6D.65 ; 'otherName'
gn-id-registeredID = %x72.65.67.69.73.74.65.72.65.64.49.44
; 'registeredID'
OtherName = "{" sp on-type-id "," sp on-value sp "}"
on-type-id = id-type-id msp OBJECT-IDENTIFIER
on-value = id-value msp Value
;; <Value> as defined in Section 3 of [RFC3641]
id-type-id = %x74.79.70.65.2D.69.64 ; 'type-id'
id-value = %x76.61.6C.75.65 ; 'value'
ORAddress = dquote *SafeIA5Character dquote
SafeIA5Character = %x01-21 / %x23-7F / ; ASCII minus dquote
dquote dquote ; escaped double quote
dquote = %x22 ; '"' (double quote)
;; Note: The <ORAddress> rule encodes the x400Address component
;; of a GeneralName as a character string between double quotes.
;; The character string is first derived according to Section 4.1
;; of [RFC2156], and then any embedded double quotes are escaped
;; by being repeated. This resulting string is output between
;; double quotes.
EDIPartyName = "{" [ sp nameAssigner "," ] sp partyName sp "}"
nameAssigner = id-nameAssigner msp DirectoryString
partyName = id-partyName msp DirectoryString
id-nameAssigner = %x6E.61.6D.65.41.73.73.69.67.6E.65.72
; 'nameAssigner'
id-partyName = %x70.61.72.74.79.4E.61.6D.65 ; 'partyName'
aki-authorityCertSerialNumber = id-authorityCertSerialNumber
msp CertificateSerialNumber
id-keyIdentifier = %x6B.65.79.49.64.65.6E.74.69.66.69.65.72
; 'keyIdentifier'
id-authorityCertIssuer =
%x61.75.74.68.6F.72.69.74.79.43.65.72.74.49.73.73.75.65.72
; 'authorityCertIssuer'
id-authorityCertSerialNumber = %x61.75.74.68.6F.72.69.74.79.43
%x65.72.74.53.65.72.69.61.6C.4E.75.6D.62.65.72
; 'authorityCertSerialNumber'
Time = time-utcTime / time-generalizedTime
time-utcTime = id-utcTime ":" UTCTime
time-generalizedTime = id-generalizedTime ":" GeneralizedTime
id-utcTime = %x75.74.63.54.69.6D.65 ; 'utcTime'
id-generalizedTime = %x67.65.6E.65.72.61.6C.69.7A.65.64.54.69.6D.65
; 'generalizedTime'
KeyUsage = BIT-STRING / key-usage-bit-list
key-usage-bit-list = "{" [ sp key-usage *( "," sp key-usage ) ] sp "}"
;; Note: The <key-usage-bit-list> rule encodes the one bits in
;; a KeyUsage value as a comma separated list of identifiers.
key-usage = id-digitalSignature
/ id-nonRepudiation
/ id-keyEncipherment
/ id-dataEncipherment
/ id-keyAgreement
/ id-keyCertSign
/ id-cRLSign
/ id-encipherOnly
/ id-decipherOnly
id-digitalSignature = %x64.69.67.69.74.61.6C.53.69.67.6E.61.74
%x75.72.65 ; 'digitalSignature'
id-nonRepudiation = %x6E.6F.6E.52.65.70.75.64.69.61.74.69.6F.6E
; 'nonRepudiation'
id-keyEncipherment = %x6B.65.79.45.6E.63.69.70.68.65.72.6D.65.6E.74
; 'keyEncipherment'
id-dataEncipherment = %x64.61.74.61.45.6E.63.69.70.68.65.72.6D.65.6E
%x74 ; "dataEncipherment'
id-keyAgreement = %x6B.65.79.41.67.72.65.65.6D.65.6E.74
; 'keyAgreement'
id-keyCertSign = %x6B.65.79.43.65.72.74.53.69.67.6E
; 'keyCertSign'
id-cRLSign = %x63.52.4C.53.69.67.6E ; "cRLSign"
id-encipherOnly = %x65.6E.63.69.70.68.65.72.4F.6E.6C.79
; 'encipherOnly'
id-decipherOnly = %x64.65.63.69.70.68.65.72.4F.6E.6C.79
; 'decipherOnly'
AltNameType = ant-builtinNameForm / ant-otherNameForm
ant-builtinNameForm = id-builtinNameForm ":" BuiltinNameForm
ant-otherNameForm = id-otherNameForm ":" OBJECT-IDENTIFIER
id-builtinNameForm = %x62.75.69.6C.74.69.6E.4E.61.6D.65.46.6F.72.6D
; 'builtinNameForm'
id-otherNameForm = %x6F.74.68.65.72.4E.61.6D.65.46.6F.72.6D
; 'otherNameForm'
BuiltinNameForm = id-rfc822Name
/ id-dNSName
/ id-x400Address
/ id-directoryName
/ id-ediPartyName
/ id-uniformResourceIdentifier
/ id-iPAddress
/ id-registeredId
id-rfc822Name = %x72.66.63.38.32.32.4E.61.6D.65 ; 'rfc822Name'
id-dNSName = %x64.4E.53.4E.61.6D.65 ; 'dNSName'
id-x400Address = %x78.34.30.30.41.64.64.72.65.73.73 ; 'x400Address'
id-directoryName = %x64.69.72.65.63.74.6F.72.79.4E.61.6D.65
; 'directoryName'
id-ediPartyName = %x65.64.69.50.61.72.74.79.4E.61.6D.65
; 'ediPartyName'
id-iPAddress = %x69.50.41.64.64.72.65.73.73 ; 'iPAddress'
id-registeredId = %x72.65.67.69.73.74.65.72.65.64.49.64
; 'registeredId'
id-uniformResourceIdentifier = %x75.6E.69.66.6F.72.6D.52.65.73.6F.75
%x72.63.65.49.64.65.6E.74.69.66.69.65.72
; 'uniformResourceIdentifier'
CertPolicySet = "{" sp CertPolicyId *( "," sp CertPolicyId ) sp "}"
CertPolicyId = OBJECT-IDENTIFIER
NameConstraintsSyntax = "{" [ sp ncs-permittedSubtrees ]
[ sep sp ncs-excludedSubtrees ] sp "}"
ncs-permittedSubtrees = id-permittedSubtrees msp GeneralSubtrees
ncs-excludedSubtrees = id-excludedSubtrees msp GeneralSubtrees
id-permittedSubtrees =
%x70.65.72.6D.69.74.74.65.64.53.75.62.74.72.65.65.73
; 'permittedSubtrees'
id-excludedSubtrees =
%x65.78.63.6C.75.64.65.64.53.75.62.74.72.65.65.73
; 'excludedSubtrees'
GeneralSubtrees = "{" sp GeneralSubtree
*( "," sp GeneralSubtree ) sp "}"
GeneralSubtree = "{" sp gs-base
[ "," sp gs-minimum ]
[ "," sp gs-maximum ] sp "}"
gs-base = id-base msp GeneralName
gs-minimum = id-minimum msp BaseDistance
gs-maximum = id-maximum msp BaseDistance
id-base = %x62.61.73.65 ; 'base'
id-minimum = %x6D.69.6E.69.6D.75.6D ; 'minimum'
id-maximum = %x6D.61.78.69.6D.75.6D ; 'maximum'
BaseDistance = INTEGER-0-MAX
CertificatePairExactAssertion = "{" [ sp cpea-issuedTo ]
[sep sp cpea-issuedBy ] sp "}"
;; At least one of <cpea-issuedTo> or <cpea-issuedBy> MUST be present.
cpea-issuedTo = id-issuedToThisCAAssertion msp
CertificateExactAssertion
cpea-issuedBy = id-issuedByThisCAAssertion msp
CertificateExactAssertion
id-issuedToThisCAAssertion = %x69.73.73.75.65.64.54.6F.54.68.69.73
%x43.41.41.73.73.65.72.74.69.6F.6E ; 'issuedToThisCAAssertion'
id-issuedByThisCAAssertion = %x69.73.73.75.65.64.42.79.54.68.69.73
%x43.41.41.73.73.65.72.74.69.6F.6E ; 'issuedByThisCAAssertion'
CertificatePairAssertion = "{" [ sp cpa-issuedTo ]
[sep sp cpa-issuedBy ] sp "}"
;; At least one of <cpa-issuedTo> and <cpa-issuedBy> MUST be present.
cpa-issuedTo = id-issuedToThisCAAssertion msp CertificateAssertion
cpa-issuedBy = id-issuedByThisCAAssertion msp CertificateAssertion
CertificateListExactAssertion = "{" sp clea-issuer ","
sp clea-thisUpdate
[ "," sp clea-distributionPoint ] sp "}"
clea-issuer = id-issuer msp Name
clea-thisUpdate = id-thisUpdate msp Time
clea-distributionPoint = id-distributionPoint msp
DistributionPointName
id-thisUpdate = %x74.68.69.73.55.70.64.61.74.65 ; 'thisUpdate'
id-distributionPoint =
%x64.69.73.74.72.69.62.75.74.69.6F.6E.50.6F.69.6E.74
; 'distributionPoint'
DistributionPointName = dpn-fullName / dpn-nameRelativeToCRLIssuer
dpn-fullName = id-fullName ":" GeneralNames
dpn-nameRelativeToCRLIssuer = id-nameRelativeToCRLIssuer ":"
RelativeDistinguishedName
id-fullName = %x66.75.6C.6C.4E.61.6D.65 ; 'fullName'
id-nameRelativeToCRLIssuer = %x6E.61.6D.65.52.65.6C.61.74.69.76.65
%x54.6F.43.52.4C.49.73.73.75.65.72 ; 'nameRelativeToCRLIssuer'
CertificateListAssertion = "{" [ sp cla-issuer ]
[ sep sp cla-minCRLNumber ]
[ sep sp cla-maxCRLNumber ]
[ sep sp cla-reasonFlags ]
[ sep sp cla-dateAndTime ]
[ sep sp cla-distributionPoint ]
[ sep sp cla-authorityKeyIdentifier ] sp "}"
cla-issuer = id-issuer msp Name
cla-minCRLNumber = id-minCRLNumber msp CRLNumber
cla-maxCRLNumber = id-maxCRLNumber msp CRLNumber
cla-reasonFlags = id-reasonFlags msp ReasonFlags
cla-dateAndTime = id-dateAndTime msp Time
cla-distributionPoint = id-distributionPoint msp
DistributionPointName
cla-authorityKeyIdentifier = id-authorityKeyIdentifier msp
AuthorityKeyIdentifier
id-minCRLNumber = %x6D.69.6E.43.52.4C.4E.75.6D.62.65.72
; 'minCRLNumber'
id-maxCRLNumber = %x6D.61.78.43.52.4C.4E.75.6D.62.65.72
; 'maxCRLNumber'
id-reasonFlags = %x72.65.61.73.6F.6E.46.6C.61.67.73 ; 'reasonFlags'
id-dateAndTime = %x64.61.74.65.41.6E.64.54.69.6D.65 ; 'dateAndTime'
CRLNumber = INTEGER-0-MAX
ReasonFlags = BIT-STRING
/ "{" [ sp reason-flag *( "," sp reason-flag ) ] sp "}"
reason-flag = id-unused
/ id-keyCompromise
/ id-cACompromise
/ id-affiliationChanged
/ id-superseded
/ id-cessationOfOperation
/ id-certificateHold
/ id-privilegeWithdrawn
/ id-aACompromise
id-unused = %x75.6E.75.73.65.64 ; 'unused'
id-keyCompromise = %x6B.65.79.43.6F.6D.70.72.6F.6D.69.73.65
; 'keyCompromise'
id-cACompromise = %x63.41.43.6F.6D.70.72.6F.6D.69.73.65
; 'cACompromise'
id-affiliationChanged =
%x61.66.66.69.6C.69.61.74.69.6F.6E.43.68.61.6E.67.65.64
; 'affiliationChanged'
id-superseded = %x73.75.70.65.72.73.65.64.65.64 ; 'superseded'
id-cessationOfOperation =
%x63.65.73.73.61.74.69.6F.6E.4F.66.4F.70.65.72.61.74.69.6F.6E
; 'cessationOfOperation'
id-certificateHold = %x63.65.72.74.69.66.69.63.61.74.65.48.6F.6C.64
; 'certificateHold'
id-privilegeWithdrawn =
%x70.72.69.76.69.6C.65.67.65.57.69.74.68.64.72.61.77.6E
; 'privilegeWithdrawn'
id-aACompromise = %x61.41.43.6F.6D.70.72.6F.6D.69.73.65
; 'aACompromise'
AlgorithmIdentifier = "{" sp ai-algorithm
[ "," sp ai-parameters ] sp "}"
ai-algorithm = id-algorithm msp OBJECT-IDENTIFIER
ai-parameters = id-parameters msp Value
id-algorithm = %x61.6C.67.6F.72.69.74.68.6D ; 'algorithm'
id-parameters = %x70.61.72.61.6D.65.74.65.72.73 ; 'parameters'
Kurt D. Zeilenga
OpenLDAP Foundation
EMail: Kurt@OpenLDAP.org
Copyright (C) Internet Society (2006).
На этот документ распространяются права, лицензии и ограничения, содержащиеся в BCP 78, и, за исключением случаев, изложенных в нем, авторы сохраняют все свои права.
Этот документ и содержащаяся в нём информация распространяются "КАК ЕСТЬ" и АВТОР ДОКУМЕНТА, ОРГАНИЗАЦИЯ, КОТОРУЮ ОН/ОНА ПРЕДСТАВЛЯЕТ, ИЛИ КОТОРОЙ ОН/ОНА СПОНСИРУЕТСЯ (ЕСЛИ ТАКОВЫЕ ИМЕЮТСЯ), INTERNET SOCIETY И INTERNET ENGINEERING TASK FORCE ОТКАЗЫВАЮТСЯ ОТ ВСЕХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ЛЮБЫЕ ГАРАНТИИ ТОГО, ЧТО ИСПОЛЬЗОВАНИЕ ПРИВЕДЁННОЙ ЗДЕСЬ ИНФОРМАЦИИ НЕ НАРУШАЕТ КАКИХ-ЛИБО ПРАВ ИЛИ ЛЮБЫЕ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ.
IETF не занимает никакой позиции относительно действительности или области действия каких-либо прав на интеллектуальную собственность или других прав, которые могут заявляться как относящиеся к реализации или использованию технологий, описанных в данном документе, либо в подтверждении которых могут или не могут быть доступны какие-либо лицензии; кроме того, IETF не заявляет о том, что она будет предпринимать какие-либо независимые усилия по выявлению подобных прав. Информацию по процедурам в отношении прав в документах RFC можно найти в BCP 78 и BCP 79.
Копии поданных в секретариат IETF заявлений о правах на интеллектуальную собственность (Intellectual Property Rights, IPR), а также какие-либо документы, подтверждающие лицензию и предназначенные для предоставления доступа к ним, либо результаты попыток получения генеральных лицензий или разрешений на пользование подобными правами собственности могут быть получены теми, кто занимается реализацией, или пользователями данной спецификации из он-лайн репозитория IPR IETF по адресу http://www.ietf.org/ipr.
IETF просит всех заинтересованных лиц довести до её сведения любые авторские права, патенты или патентные заявки, либо другие права собственности, которые могут касаться технологий данного стандарта и могут потребоваться для его реализации. Пожалуйста, направляйте информацию в IETF по адресу ietf-ipr@ietf.org.
Финансирование функций RFC Editor обеспечивается IETF Administrative Support Activity (IASA).