Чтобы создать запрос сертификата, содержащий альтернативные имена субъектов (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
Попробовав некоторые параметры (спасибо, Дженни), я просто проверил исходный код и обнаружил, что файл конфигурации ожидает одно из следующих значений:
Итак, в моем случае я написал
[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.