Назад | Перейти на главную страницу

openssl: сгенерировать запрос сертификата с альтернативными именами субъектов, отличными от DNS

Чтобы создать запрос сертификата, содержащий альтернативные имена субъектов (SAN) для хоста, с openssl я могу использовать файл конфигурации, подобный этому (вырезанный):

[req]
req_extensions = v3_req
[ v3_req ]
subjectAltName = @alt_names
[alt_names]
DNS = xyz.example.com

Если мне нужно указать отличительное имя или основное имя пользователя, как мне настроить alt_names раздел для запроса сертификата пользователя?
Например, я пробовал

[alt_names]
UPN = xyz@example.com

Но у меня такая ошибка:

Error Loading request extension section v3_req
5356:error:22075075:X509 V3 routines:v2i_GENERAL_NAME_ex:unsupported option:.\crypto\x509v3\v3_alt.c:557:name=userPrincipalName
5356:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:.\crypto\x509v3\v3_conf.c:93:name=subjectAltName, value=@alt_names

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

  • Эл. адрес
  • URI
  • DNS
  • RID
  • IP
  • dirName
  • другое имя

Итак, в моем случае я написал

[alt_names]
email = xyz@example.com

И openssl сгенерировал файл запроса.

Вы можете указать практически все, что разрешено вашим центром сертификации.

Соответствующий RFC RFC5280. Об этом говорится в разделе 4.2.1.6. «Альтернативное имя субъекта»

Расширение альтернативного имени субъекта позволяет привязать идентификаторы к субъекту сертификата. Эти идентификаторы могут быть включены в дополнение или вместо идентификатора в поле «тема» сертификата. Определенные параметры включают адрес электронной почты в Интернете, имя DNS, IP-адрес и унифицированный идентификатор ресурса (URI). Существуют и другие варианты, включая полностью локальные определения. МОЖЕТ быть включено несколько форм имени и несколько экземпляров каждой формы имени. Всякий раз, когда такие идентификаторы должны быть связаны в сертификате, ДОЛЖНО использоваться расширение альтернативного имени субъекта (или альтернативного имени издателя); однако DNS-имя МОЖЕТ быть также представлено в поле темы с использованием атрибута domainComponent, как описано в разделе 4.1.2.4. Обратите внимание, что там, где такие имена представлены в полях темы, не требуется преобразовывать их в имена DNS.

Вам следует прочитать оставшуюся часть этого раздела, а затем уточнить в своем центре сертификации, что они поддерживают. Стоит отметить, что ваш ЦС должен убедитесь, что все альтернативные имена субъектов верны.

Чтобы использовать адрес электронной почты, RFC говорит в разделе 4.1.2.6.

Соответствующие реализации, генерирующие новые сертификаты с адресами электронной почты, ДОЛЖНЫ использовать rfc822Name в расширении альтернативного имени субъекта (раздел 4.2.1.6) для описания таких идентификаторов. Одновременное включение атрибута emailAddress в отличительное имя субъекта для поддержки устаревших реализаций не рекомендуется, но разрешено.

Поэтому вместо UPI следует использовать rfc822Name.