Как выдать сертификат субъекту с пользовательским форматом DN? - PullRequest
5 голосов
/ 05 января 2012

В нашем приложении мы генерируем сертификаты для внутренних объектов, таких как платформа и пользователь.Наши внутренние объекты идентифицируются с помощью пользовательских DN:

  • DN платформы: p = имя_платформы
  • DN пользователя: cn = имя_пользователя, p = имя_платформы

Мы попытались сгенерировать сертификат X.509 для платформы или пользователя с помощью популярных инструментов, таких как openssl, keytool, реализация javax.security (BouncyCastle), например:

keytool -genkey -dname "p=platformName" -alias platformName

Однако эти инструменты не принимают / распознают ключевое слово «P» и не требуют определенных ключевых слов, таких как «CN» в DN субъекта сертификата.

Как выдать сертификат объекту с пользовательским форматом DN?

Примечание: Нам не нужно иметь DN, содержащие стандартные ключевые слова (CN, OU и т. Д.)потому что все сертификаты предназначены для внутреннего использования нашими продуктами (не будут проверены третьей стороной или включены в цепочку сертификатов).

Ответы [ 2 ]

4 голосов
/ 23 марта 2014

Нам не нужно иметь DN, содержащие стандартные ключевые слова (CN, OU и т. Д.)

Как выдать сертификат субъекту с пользовательским форматом DN?

Отображаемые атрибуты или поля являются подробностями уровня представления.Не существует выделенного DN поля как такового .Поля, используемые для формирования DN, представляют собой совокупность других атрибутов и выбираются произвольно.Наиболее распространенными являются C, O, OU, CN и т. Д.

Атрибуты или поля типа C, O, OU, CN хорошо известныOID, связанные с ними.Вы можете использовать другие OID, которые распознаются инструментами.Например, в МСЭ X.520 перечислены сотни из них.Есть и другие стандарты, которые их декларируют.Например, атрибут адреса электронной почты от PKCS 9 и имеет OID 1.2.840.113549.1.9.1.

Как сказал Бурхан Халид, вы даже можете добавить свои собственные пары имя / значение, составив OID (Отказ от руки).Однако другие инструменты презентации не будут знать, как их отображать.То есть они не будут знать «дружественное имя».

Поскольку другие инструменты не распознают ваш OID для платформы (или «p = ...»), поэтому вы получаете ... эти инструменты не принимают / распознают ключевое слово "P" .Инструменты не знают, как обращаться с вашими пользовательскими атрибутами.

4 голосов
/ 05 января 2012

Я могу говорить только за openssl, так как я не знаком с другими инструментами.

Из документов openssl

МОДУЛЬ КОНФИГУРАЦИИ ОБЪЕКТА ASN1

Этот модуль имеет имя oid_section. Значение этой переменной указывает на раздел, содержащий пары имя-значение OID: имя короткое и длинное имя OID, значение представляет собой числовую форму OID. Хотя некоторые из подкоманд утилиты openssl уже имеют их собственная функциональность раздела ОБЪЕКТА ASN1 не все делают. Используя Модуль конфигурации ASN1 OBJECT все подкоманды утилиты openssl может видеть новые объекты, а также любые совместимые приложения.

Итак, вам нужно создать эти oids в /etc/openssl.conf или там, где файл предназначен для вашей платформы, тогда openssl не выдаст вам сообщение Subject attribute p has no known NID, skipped, которое, я подозреваю, и есть то, что вы получаете сейчас.

...