Открыть сервис

Distinguished Name

Distinguished Name (DN, рус. «отличительное имя») — это строка символов, однозначно идентифицирующая конкретного субъекта (пользователя, сервер, устройство, организацию) в иерархической системе каталогов, основанной на протоколе X.500 и его облегчённом варианте LDAP (Lightweight Directory Access Protocol). DN представляет собой последовательность атрибутов, каждый из которых описывает один уровень иерархии, от самого общего к самому конкретному, и используется для точного адресования записи в распределённой базе данных, такой как Microsoft Active Directory, OpenLDAP или каталог сертификатов X.509.

История и контекст возникновения

Протокол X.500, разработанный Международным союзом электросвязи (ITU-T) в конце 1980-х годов, стал первой попыткой создания глобальной системы каталогов, аналогичной телефонному справочнику для компьютерных сетей. X.500 определял сложную иерархическую структуру записей, где каждая запись имела уникальный путь. Однако из-за громоздкости и требовательности к ресурсам X.500 не получил широкого распространения в интернете. В середине 1990-х годов появился LDAP, упрощённый протокол доступа к каталогам, который сохранил основную идею именования записей через Distinguished Name.

Структура DN была заимствована из X.500 и адаптирована для LDAP. Также DN активно применяется в инфраструктуре открытых ключей (PKI), где каждому цифровому сертификату X.509 присваивается Distinguished Name владельца (Subject DN) и издателя (Issuer DN). Это позволило однозначно связывать сертификат с конкретным субъектом или устройством в иерархии доверия.

Структура и синтаксис Distinguished Name

Distinguished Name состоит из последовательности пар «атрибут=значение», разделённых запятыми (,). Порядок атрибутов — от самого конкретного (крайнего правого элемента) к самому общему (крайнего левого), однако на практике в LDAP-каталогах часто используется обратный порядок, где наиболее общий атрибут идёт первым справа. В стандарте RFC 4514 (формат LDAP-имен) атрибуты перечисляются слева направо в порядке возрастания иерархии.

Типовые атрибуты, используемые в DN:

  • CN (Common Name) — общее имя субъекта. Для человека — ФИО; для устройства — сетевое имя (например, server.example.com).
  • OU (Organizational Unit) — подразделение организации (отдел, группа).
  • O (Organization) — название организации.
  • L (Locality) — населённый пункт (город).
  • ST (State) — штат, область или край.
  • C (Country) — страна (двухбуквенный код ISO 3166-1 alpha-2).
  • DC (Domain Component) — компоненты DNS-домена. Используется в Active Directory в качестве альтернативы O/OU для построения иерархии по доменному имени (DC=example,DC=com).
  • UID (User Identifier)уникальный идентификатор пользователя.
  • E или Emailэлектронная почта (в некоторых реализациях).

Пример DN субъекта в Active Directory:

CN=Иванов Иван Петрович,OU=Отдел разработки,OU=Департамент информационных технологий,DC=example,DC=com

Здесь DC=example,DC=com задаёт корень дерева (домен example.com), далее два подразделения, затем CN — конкретная учётная запись.

Различие между Relative Distinguished Name и Distinguished Name

Каждая запись в LDAP-каталоге имеет свой Relative Distinguished Name (RDN) — это один атрибут, который однозначно идентифицирует запись внутри своего родительского контейнера. Например, для записи выше RDN — CN=Иванов Иван Петрович. Полный же DN строится как цепочка RDN всех предков, начиная от корня каталога. В Active Directory почти все RDN являются именами (CN) или компонентами домена (DC), тогда как в OpenLDAP типичны UID или CN.

Использование в Active Directory

В среде Microsoft Active Directory Distinguished Name является основным способом обращения к объектам через LDAP-протокол и через ADSI (Active Directory Service Interfaces). DN хранится в атрибуте distinguishedName для каждого объекта. Однако при выводе пользователю (например, в оснастках управления) чаще отображается «относительное имя» или просто имя учётной записи (SAM-имя), так как DN может быть длинным и неудобным для восприятия.

При создании учётной записи администратор обычно указывает контейнер (OU), и система автоматически формирует DN, добавляя RDN к DN родительского контейнера. Изменение родительского контейнера (перемещение объекта) приводит к изменению его DN.

Использование в сертификатах X.509

Каждый цифровой сертификат, соответствующий стандарту X.509 (например, SSL/TLS-сертификаты, сертификаты подписи ЭЦП), содержит поля Subject (DN владельца) и Issuer (DN издателя). DN в сертификате обычно состоит из следующих атрибутов: CN, O, OU, L, ST, C. Для проверки цепочки доверия система сопоставляет DN издателя корневого сертификата с DN издателя подчинённого. Если они не совпадают, цепочка считается нарушенной.

Пример DN Subject в сертификате SSL-сайта:

CN=www.example.com, OU=Web Services, O=Example Inc., L=San Francisco, ST=California, C=US

При обращении к сайту браузер проверяет, что имя в поле CN (или альтернативных именах) совпадает с доменом в адресной строке.

Правила кодирования и экранирования

Согласно RFC 4514, значения атрибутов в DN могут содержать специальные символы, такие как запятая (;), знак плюс (+), кавычки ("), обратная косая черта (\), знак равенства (=) и пробелы в начале/конце. Для корректного парсинга эти символы экранируются обратной косой чертой (\). Например, DN для пользователя с фамилией «Смит, Джон» будет выглядеть как:

CN=Смит\, Джон,OU=Отдел,DC=example,DC=com

Пробелы в конце или начале значения также экранируются (например, CN=\ Иван\ ). Существуют также более длинные строки с экранированием в двоичном представлении, но на практике для российских LDAP-каталогов редко встречаются сложные символы, кроме запятых и точек.

Проблемы и ограничения

  • Длина DN. В Active Directory длина DN не должна превышать 10 000 символов. В сложных иерархиях с глубокой вложенностью OU это может стать проблемой, хотя на практике превышение встречается редко.
  • Изменяемость. DN объекта может измениться при перемещении в другой контейнер. Это приводит к тому, что ссылки на объект по DN (например, в скриптах ACL) устаревают. Для идентификации уникальных объектов в LDAP существуют альтернативы: GUID (глобально уникальный идентификатор, не меняется при перемещении) и SID (идентификатор безопасности в Active Directory).
  • Сложность для человека. DN — машинно-ориентированный формат, неудобный для ввода вручную. Администраторы предпочитают использовать графические интерфейсы или LDAP-запросы с фильтрами по другим атрибутам (например, sAMAccountName в Active Directory).
  • Неоднозначность атрибутов. Разные реализации LDAP могут использовать разные наборы атрибутов для построения DN. Например, в некоторых каталогах может отсутствовать атрибут OU, и иерархия строится только на DC и CN. Это усложняет перенос данных между каталогами.

Сравнение со схемами адресации

Distinguished Name является частным случаем иерархической адресации, характерной для систем, основанных на X.500. В отличие от IP-адреса (плоская или иерархическая сетевая адресация) или URL (веб-адресация, основанная на доменном имени и пути), DN адресует запись в контексте каталога учётных записей и ресурсов. Он может содержать DNS-подобные компоненты (DC), но не предназначен для работы через DNS напрямую. В Active Directory существует интеграция DNS и LDAP, где DN может быть получен из полного квалифицированного доменного имени (FQDN), но обратное преобразование не тривиально.

Интересные факты

  • В российских каталогах Active Directory часто встречаются DN с кириллическими значениями, что иногда создаёт проблемы совместимости со старым программным обеспечением, не поддерживающим Unicode.
  • Кроме стандартных атрибутов, в DN могут использоваться расширения, определённые в конкретной схеме LDAP (например, unstructuredName или businessCategory).
  • В некоторых документах RFC Distinguished Name также называют «путьом» или «различающимся именем».

Источники

  1. RFC 4514 — Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names (2006).
  2. ITU-T Recommendation X.521 — Information technology — Open Systems Interconnection — The Directory: Selected Attribute Types (2016).
  3. Microsoft Docs — «Distinguished Names» (Active Directory Technical Reference, 2020).
  4. RFC 5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (2008).
  5. «LDAP: Programming Directory-Enabled Applications with Lightweight Directory Access Protocol» — T. Howes, M. Smith (2001, Addison-Wesley) — разделы по DN и синтаксису.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →