Я пытаюсь выпустить новый сертификат, используя поле дополнительных атрибутов в Windows CertSrv Web-Enrollment Client.
Я добавил CSR, выбрал шаблон и ввел его в поле атрибутов:
SAN:dns=HOSTNAME&dns=HOSTNAME.DOMAIN.COM&ipaddress=IPADRESS
Запрос выполнен успешно, но когда я проверяю подписанный сертификат, к нему не добавляется атрибут «Альтернативные имена». Я что-то упускаю? Может проблема с шаблоном? (использовалась копия шаблона веб-сервера уровня Win 2003 по умолчанию с некоторыми пользовательскими настройками).
/ edit Также я пробовал использовать
certreq -submit -attrib "CertificateTemplate:MYTEMPLATE" <Cert Request.req> -attrib "SAN:dns=HOSTNAME&dns=HOSTNAME2&ipaddress=IPADDRESS"
что приводит к той же проблеме: создается сертификат, но без атрибута SAN.
/ edit2 также я установил CA для выдачи сертификатов SAN, используя
certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
и перезапуск службы CA. Тем не менее: SAN нет.
Обратите внимание: используя req. файлы и OpenSSL для создания CSR. Я могу генерировать сертификаты, используя CA, в который включены некоторые SAN. Однако этот вариант недействителен в моей текущей ситуации, поскольку я получаю CSR из приложения, и я не могу вручную создать его для приложения.
/ edit3 Я попытался использовать сертификат веб-сервера по умолчанию БЕЗ каких-либо изменений, и внезапно он сработал. Итак, теперь вопрос: каковы требования к шаблону для включения SAN?
Я знаю, что это старый, но я только что понял это сам и подумал, что это может помочь кому-то другому. Мне тоже не удалось заставить CA добавить SAN через веб-страницу или certreq ... -attrib "SAN:DNS=<FQDN>[&DNS=<FQND2>...]..."
формат. Атрибут SAN был проигнорирован, даже если сертификат был выдан.
Однако я обнаружил, что он работает с таким форматом: certreq -attrib "CertificateTemplate:WebServer\nSAN:DNS=<Name1>[&DNS=<name2>...][&IPAddress=<IP1>...]" <csr filename> <cer filename>
Например, если у вас есть файл запроса сертификата с именем HP_VC.csr и вы хотите, чтобы альтернативные имена субъектов были vc1, vc2, vc1.domain.com, vc2.domain.com, 192.168.1.1 и 192.168.1.2, команда будет быть:
certreq -attrib "CertificateTemplate:WebServer\nSAN:DNS=vc1&DNS=vc2&DNS=vc1.domain.com&DNS=vc2.domain.com&IPAddress=192.168.1.1&IPAddress=192.168.1.2" HP_VC.csr HP_VC.cer
Сертификат в HP_VC.cer будет содержать атрибут SAN.
Я использую это для модулей HP Virtual Connect (VC), встроенных администраторов (OA) и iLOs. Он должен работать для любой общей ситуации, когда требуется сертификат с SAN.
Здесь тоже есть хороший ответ, который решил проблему для меня: http://terenceluk.blogspot.com/2017/09/adding-san-subject-alternative-name.html
Похоже, что по умолчанию служба сертификатов фактически не принимает ввод SubjectAltName из веб-формы, возможно, из соображений безопасности. Как кто-то комментирует эту страницу - это зависит от того, насколько хорошо вы доверяете элементам управления доступом к веб-консоли служб сертификации.