OID атрибутов DN

OID (Object Identifier) в контексте Distinguished Name (DN) представляет собой формализованную систему идентификации атрибутов субъекта сертификата в инфраструктуре X.509. В Jsrsasign работа с DN опирается на строгую ASN.1-модель, где каждый элемент имени имеет не только строковое представление, но и уникальный числовой идентификатор, позволяющий однозначно интерпретировать структуру имени в различных криптографических системах.

Distinguished Name представляет собой иерархический набор атрибутов, описывающих субъект или эмитента сертификата. Каждый атрибут в DN кодируется как пара:

  • тип атрибута (OID)
  • значение атрибута

В ASN.1 это выражается через конструкцию AttributeTypeAndValue, где OID определяет семантику поля, а значение задаёт конкретные данные.

DN формируется как последовательность таких пар, например:

  • Common Name (CN)
  • Organization (O)
  • Organizational Unit (OU)
  • Country (C)

Каждое из этих полей имеет свой стандартный OID, закреплённый в международных спецификациях X.500 / X.509.

Основные OID атрибутов DN

В криптографических библиотеках, включая Jsrsasign, используется набор стандартных OID, определённых ITU-T и IETF.

Базовые атрибуты X.520

  • CN (Common Name): 2.5.4.3
  • C (Country Name): 2.5.4.6
  • O (Organization Name): 2.5.4.10
  • OU (Organizational Unit Name): 2.5.4.11
  • L (Locality Name): 2.5.4.7
  • ST (State or Province Name): 2.5.4.8
  • STREET (Street Address): 2.5.4.9
  • SERIALNUMBER: 2.5.4.5
  • TITLE: 2.5.4.12

Эти OID являются основой большинства DN-структур в X.509 сертификатах.

Дополнительные и часто используемые OID

Помимо классических атрибутов, в DN могут использоваться расширенные идентификаторы:

  • Email Address: 1.2.840.113549.1.9.1
  • Domain Component (DC): 0.9.2342.19200300.100.1.25

Email Address исторически относится к PKCS#9 и часто встречается в пользовательских сертификатах, хотя в современных реализациях предпочтение отдаётся альтернативным механизмам через SAN (Subject Alternative Name).

Представление DN в Jsrsasign

В Jsrsasign DN обычно задаётся в виде массива или строки, где библиотека выполняет преобразование в ASN.1 структуру X500Name.

Пример логической структуры:

  • CN = example.com
  • O = Example Corp
  • C = US

Внутренне Jsrsasign сопоставляет строковые ключи с соответствующими OID и формирует DER-последовательность.

Внутреннее отображение атрибутов

Библиотека использует таблицу соответствий:

  • CN2.5.4.3
  • O2.5.4.10
  • OU2.5.4.11
  • C2.5.4.6

При отсутствии стандартного ключа возможно прямое использование OID, что важно при работе с нестандартными PKI-системами.

Формирование X500Name в Jsrsasign

DN в Jsrsasign создаётся через объектную модель:

  • KJUR.asn1.x509.X500Name

Логика формирования включает:

  1. Разбор входных атрибутов
  2. Преобразование ключей в OID
  3. Кодирование значений в ASN.1 STRING-типы
  4. Сборка RDN (Relative Distinguished Name)
  5. Формирование последовательности RDNSequence

Каждый RDN может содержать один или несколько атрибутов, что позволяет формировать сложные DN с множественными значениями одного уровня.

ASN.1 кодирование OID в DN

OID кодируется в формате OBJECT IDENTIFIER согласно правилам DER:

  • первый байт объединяет первые два числа OID
  • последующие числа кодируются base-128 с продолжением

Например:

2.5.4.3 (CN) преобразуется в бинарную ASN.1 структуру, которая затем включается в AttributeTypeAndValue.

Jsrsasign скрывает эту сложность, предоставляя высокоуровневый API, но при анализе сертификатов важно понимать, что именно OID определяет тип поля, а не его строковое имя.

Разбор DN и извлечение OID

При парсинге сертификата Jsrsasign выполняет обратное преобразование:

  1. Чтение DER-последовательности Subject/Issuer
  2. Извлечение RDNSequence
  3. Определение OID каждого атрибута
  4. Маппинг OID → читаемое имя (CN, O, OU и т.д.)

Если OID неизвестен библиотеке, он остаётся в числовом виде, что важно при работе с кастомными расширениями корпоративных PKI.

Особенности работы с нестандартными OID

В реальных системах DN может включать:

  • внутренние корпоративные атрибуты
  • расширенные политики идентификации
  • кастомные идентификаторы LDAP-схем

В таких случаях Jsrsasign позволяет использовать прямую запись OID:

  • вместо CN1.2.3.4.5.6.7.8

Значение при этом обрабатывается как обычный атрибут DN, без необходимости предопределённого алиаса.

Кодирование типов значений DN

Каждый OID связан не только с идентификатором, но и с типом ASN.1 значения:

  • PrintableString
  • UTF8String
  • IA5String

Например:

  • CN обычно кодируется как UTF8String
  • C часто как PrintableString

Jsrsasign автоматически выбирает тип на основе содержания строки, но при необходимости можно контролировать кодирование вручную через ASN.1 примитивы.

Влияние OID на совместимость сертификатов

OID в DN критичен для совместимости между:

  • браузерами
  • TLS-серверами
  • LDAP-каталогами
  • системами аутентификации

Неправильное использование OID (например, подмена CN нестандартным идентификатором без корректного OID) приводит к тому, что сертификат может быть корректно подписан, но не распознан внешними системами.

Особенно это касается:

  • проверки имени хоста
  • сопоставления субъекта в доверенных цепочках
  • политик доступа в PKI

Использование DN OID в цепочках сертификатов

В цепочке сертификатов DN сравниваются между:

  • Subject текущего сертификата
  • Issuer следующего сертификата

Сравнение происходит не по строкам, а по ASN.1 структурам, где OID играет ключевую роль. Даже одинаковые строки, но с разными OID, считаются различными атрибутами.

Практическая модель обработки DN в Jsrsasign

Внутренняя логика библиотеки сводится к следующим этапам:

  • нормализация входного DN
  • разрешение алиасов в OID
  • построение ASN.1 структуры RDN
  • сериализация в DER
  • интеграция в X.509 сертификат

При анализе сертификатов выполняется обратный процесс с восстановлением человекочитаемой формы.

Важность OID-ориентированного подхода

Использование OID вместо строковых ключей обеспечивает:

  • строгую типизацию атрибутов
  • отсутствие неоднозначности между различными схемами DN
  • совместимость с глобальной PKI-инфраструктурой
  • корректную интероперабельность между разными реализациями X.509

DN в Jsrsasign следует этой модели, сохраняя соответствие стандартам X.500 и ASN.1 без отклонений от спецификации.