Правильный способ пометить сертификат x509 идентификатором пользователя, который его создал?

У меня есть служба Windows, которая обрабатывает запросы на подпись сертификатов для создания сертификатов. Он также создает самозаверяющие сертификаты (центры сертификации) по запросу пользователей Windows. В любом случае я хочу поместить имя учетной записи пользователя (строка учетной записи NT, например, "домен \ пользователь") от пользователя, который сделал запрос на создание сертификата, в готовом сертификате, чтобы было легко отслеживать, кто и что создал.

Где лучше всего прикрепить строку учетной записи пользователя в сертификате? Первое, что пришло в голову, - это собственное расширение. Это имеет смысл? Или, может быть, альтернативное поле в теме? Я не знаю, является ли это вообще обычной практикой.

1 ответ

Решение

Если вы не привержены использованию формата учетной записи NT, вы можете рассмотреть emailAddress атрибут в сертификате subjectName, Просто поменяй Test\Bloggs в bloggs@test,

Также есть pseudonym атрибут, который можно использовать. Однако, хотя OpenSSL правильно отображает имя этого атрибута, Windows показывает его как 2.5.4.65 что может быть не то, что вы хотите.

В теории subjectAltName расширение также может быть использовано для хранения этого. E сть otherName поле, которое может быть использовано. Тем не менее, OpenSSL отображает сертификат следующим образом:

        X509v3 Subject Alternative Name:
            DNS:test.example.org, othername:<unsupported>

В то время как Windows отображает:

DNS Name=test.example.org
Other Name:
     1.3.6.1.4.1.1=0c 0b 54 45 53 54 5c 42 6c 6f 67 67 73

Очевидно, что ни один из них не полезен для вас.

Поэтому будьте прагматичны - либо используйте pseudonym и жить с тем, как Windows отображает его, или быть еще более прагматичным и взломать атрибут OrgnaizationalUnitName (OU) и использовать его. Вы можете иметь несколько OU, поэтому не нужно жертвовать какими-либо текущими OU, которые у вас могут быть. Digicert, Microsoft и Verisign (и, без сомнения, другие) используют OU в качестве дополнительного текстового поля без какого-либо вреда. Возможно, он не соответствует стандартам на 100%, но это работает.

Если вы идете по последнему маршруту и ​​используете ограничения имени, убедитесь, что это дополнительное подразделение является первым в списке при создании запроса на подпись. То есть он не нарушает порядок ограничения имени.

Другие вопросы по тегам