Перевод выполнен участниками проекта Pro-LDAP.ru. Предложения по улучшению перевода и сообщения об ошибках принимаются на форуме проекта.
Network Working Group
Request for Comments: 4523
Категория: Standards Track
K. Zeilenga, OpenLDAP Foundation
Июнь 2006 года
Отменяет: 2252, 2256, 2587

Lightweight Directory Access Protocol (LDAP): Определение элементов набора схемы данных для сертификатов X.509

Статус документа

Этот документ определяет проект стандарта протокола Интернет для сообщества Интернет, а также приглашает к обсуждению и подаче предложений по его усовершенствованию. Пожалуйста, сверяйтесь с текущей редакцией "Официальных стандартов протоколов Интернет" (STD 1), чтобы узнать состояние стандартизации и статус этого протокола. Ограничений на распространение данного документа не накладывается.

Уведомление об авторских правах

Copyright (C) Internet Society (2006).

Тезисы

В этом документе описывается схема данных для представления сертификатов X.509, элементов стандарта X.521, относящихся к защите информации, и других связанных элементов в каталогах, доступ к которым осуществляется с использованием протокола Lightweight Directory Access Protocol (LDAP). Приводимые в этом документе LDAP-определения для элементов схемы данных X.509 и X.521 заменяют те определения, которые были представлены в RFC 2252 и 2256.

1. Ведение

В этом документе предоставляются определения схемы данных [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]. Приведённые здесь определения отформатированы (разбиты на строки) для улучшения читабельности.

2. Синтаксисы

В этом разделе описаны различные синтаксисы, используемые в LDAP для передачи сертификатов и связанных с ними типов данных.

2.1. Certificate

   ( 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) быть сохранены в том виде, в котором они представлены.

2.2. CertificateList

   ( 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) быть сохранены в том виде, в котором они представлены.

2.3. CertificatePair

   ( 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) быть сохранены в том виде, в котором они представлены.

2.4. SupportedAlgorithm

   ( 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) быть сохранены в том виде, в котором они представлены.

2.5. CertificateExactAssertion

   ( 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].

2.6. CertificateAssertion

   ( 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].

2.7. CertificatePairExactAssertion

   ( 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].

2.8. CertificatePairAssertion

   ( 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].

2.9. CertificateListExactAssertion

   ( 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.

2.10. CertificateListAssertion

   ( 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].

2.11. AlgorithmIdentifier

   ( 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].

3. Правила соответствия

В этом разделе представлен набор правил соответствия для использования в LDAP, применяемых к сертификатам и связанным с ними типам данных. Применение данных правил должно соответствовать применению их аналогов из стандарта X.500.

3.1. certificateExactMatch

Правило соответствия 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 )

3.2. certificateMatch

Правило соответствия 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 )

3.3. certificatePairExactMatch

Правило соответствия 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 )

3.4. certificatePairMatch

Правило соответствия 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 )

3.5. certificateListExactMatch

Правило соответствия 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 )

3.6. certificateListMatch

Правило соответствия 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 )

3.7. algorithmIdentifierMatch

Правило соответствия 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 )

4. Типы атрибутов

В этом разделе описан набор типов атрибутов сертификатов и связанных с ними типов данных для использования в LDAP.

4.1. userCertificate

В атрибуте 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".

4.2. cACertificate

В атрибуте 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".

4.3. crossCertificatePair

В атрибуте 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".

4.4. certificateRevocationList

В атрибуте 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".

4.5. authorityRevocationList

В атрибуте 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".

4.6. deltaRevocationList

В атрибуте 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".

4.7. supportedAlgorithms

В атрибуте 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".

5. Объектные классы

В этом разделе описан набор связанных с сертификатами объектных классов для использования в LDAP.

5.1. pkiUser

Данный объектный класс используется для дополнения записей объектов, которые могут быть субъектами сертификатов, как определено в разделе 11.1.1 стандарта [X.509].

   ( 2.5.6.21 NAME 'pkiUser'
           DESC 'X.509 PKI User'
           SUP top AUXILIARY
           MAY userCertificate )

5.2. pkiCA

Данный объектный класс используется для дополнения записей объектов, которые действуют как удостоверяющие центры, как определено в разделе 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 ) )

5.3. cRLDistributionPoint

Данный класс используется для представления объектов, которые действуют как точки распространения 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 ) )

5.4. deltaCRL

Объектный класс deltaCRL используется для дополнения записей, которые содержат дельта-списки отзыва сертификатов, как определено в разделе 11.1.4 стандарта [X.509].

   ( 2.5.6.23 NAME 'deltaCRL'
           DESC 'X.509 delta CRL'
           SUP top AUXILIARY
           MAY deltaRevocationList )

5.5. strongAuthenticationUser

Данный объектный класс используется для дополнения записей объектов, участвующих в аутентификации на основе сертификатов, как определено в разделе 6.15 стандарта [X.521]. Этот объектный класс является устаревшим в пользу pkiUser.

   ( 2.5.6.15 NAME 'strongAuthenticationUser'
           DESC 'X.521 strong authentication user'
           SUP top AUXILIARY
           MUST userCertificate )

5.6. userSecurityInformation

Данный объектный класс используется для дополнения записей необходимой дополнительной информацией о безопасности, как определено в разделе 6.16 стандарта [X.521].

   ( 2.5.6.18 NAME 'userSecurityInformation'
           DESC 'X.521 user security information'
           SUP top AUXILIARY
           MAY ( supportedAlgorithms ) )

5.7. certificationAuthority

Данный объектный класс используется для дополнения записей объектов, которые действуют как удостоверяющие центры, как определено в разделе 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 )

5.8. certificationAuthority-V2

Данный объектный класс используется для дополнения записей объектов, которые действуют как удостоверяющие центры, как определено в разделе 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 )

6. О безопасности

К приложениям для работы с сертификатами с поддержкой LDAP применяются общие положения о сертификатах [RFC3280]. Также к ним применяются общие соображения безопасности LDAP [RFC4510].

Хотя элементы данных сертификата обычно подписаны электронной подписью, эти подписи защищают только целостность подписанной информации. В отсутствие защиты целостности данных на уровне протокола LDAP (или более низких уровнях, например, IPsec), сервер не может полагаться на то, что поступивший от клиента запрос сертификата (или любой другой запрос) не был изменён при передаче. Также и клиент не может полагаться на то, что результаты запроса не были изменены при передаче. Поэтому, как правило, рекомендуется, чтобы реализации данного стандарта использовали имеющиеся в LDAP сервисы аутентификации и обеспечения целостности данных [RFC4513][RFC4511].

7. Регистрация в IANA

7.1. Регистрация идентификатора объекта

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.

7.2. Регистрация дескрипторов

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

8. Благодарности

Этот документ основан на стандарте X.509, который является продуктом ITU-T. Ряд определений схемы данных LDAP был сформирован на основе определений из RFC 2252 и 2256, оба продукта рабочей группы ASID IETF. Конструкции ABNF в приложении A предоставлены Steven Legg. Дополнительный материал для уточнения схемы данных LDAP, касающейся X.509, был заимствован из предыдущих работ David Chadwick и Steven Legg.

9. Документы

9.1. Нормативные документы

[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).

9.2. Информативные документы

[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 г.

Приложение A

Данное приложение является информативным.

В этом приложении приводятся грамматики ABNF [RFC4234] для определённых в данном документе основанных на GSER [RFC3641] специфичных для LDAP кодировок. Эти грамматики были сформированы с использованием общих элементов для кодировок GSER [RFC3642].

A.1. CertificateExactAssertion

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

A.2. CertificateAssertion

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

A.3. CertificatePairExactAssertion

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'

A.4. CertificatePairAssertion

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

A.5. CertificateListExactAssertion

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'

A.6. CertificateListAssertion

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'

A.7. AlgorithmIdentifier

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).

Перевод выполнен участниками проекта Pro-LDAP.ru. Предложения по улучшению перевода и сообщения об ошибках принимаются на форуме проекта.