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

Не удается выдать сертификаты после включения SAN?

У меня работает Microsoft CA, в котором по умолчанию не включено поле SAN, поэтому я включил его

certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

До этого все работало нормально. После включения поля SAN, когда я отправляю запрос на подпись, я получаю эту ошибку:

Your Request Id is XXX. The disposition message is “Denied by Policy Module
The certificate validity period will be shorter than the  Certificate
Template specifies, because the template validity period is longer than the
maximum certificate validity period allowed by the CA. Consider renewing the 
CA certificate, reducing the template validity period, or increasing the 
registry validity period.

Шаблон сертификата, для которого я пытаюсь запросить сертификат, имеет срок действия 2 года, а сертификат моего центра сертификации все еще действителен в течение 1,5 лет. Если я верну изменение флага для SAN с помощью

certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2

тогда я могу выдавать сертификаты, как раньше.

Я видел возможное решение, рекомендованное ниже:

certutil -setreg ca\ValidatePeriod "Years"
certutil -setreg ca\ValidityPeriodUnits 5

который не работает (пробовал) в моем случае, но я не понимаю, как это все равно решит, так как в конце дня дата истечения срока действия моего сертификата выдающего CA будет иметь приоритет над этим, если я понимаю это правильно. Я не понимаю, почему я получаю эту ошибку только при включенном поле SAN.

Как я могу это решить? Означает ли включение SAN дальнейшие проверки CA, которые я почему-то пропустил?

Похоже, что значение срока действия сертификата в шаблоне сертификата превышает предполагаемую действительность сертификата CA.

Во-вторых, certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2 команда неверна и опасна. В Microsoft ADCS по умолчанию включен SAN. Любой действительный запрос сертификата со встроенным расширением SAN приведет к выдаче сертификата с расширением SAN. Этот флаг позволяет передавать расширение SAN как неаутентифицированный атрибут (не встроенный в CSR), и CA не будет проверять значение SAN. В результате любой пользователь может получить сертификат с произвольным расширением SAN. И даже выдавать себя за администраторов домена. Вот почему EDITF_ATTRIBUTESUBJECTALTNAME2 флаг ДОЛЖЕН БЫТЬ ОТКЛЮЧЕН.

Есть два варианта:

  1. уменьшите параметр срока действия в шаблоне сертификата, чтобы не превышать предполагаемый срок действия сертификата ЦС (скажем, установите его на 1 год).
  2. обновить сертификат ЦС, чтобы сделать его действительным в течение более длительного периода.

Я бы посоветовал выбрать второй вариант, потому что в течение следующих 6 месяцев вы столкнетесь с большим количеством проблем и будете вынуждены обновить сертификат CA. В Интернете есть много статей, в которых предлагается обновить сертификат CA путем повторного использования существующей пары ключей. Это решение менее болезненно, но может вызвать проблемы с проверкой цепочки. Каждый раз, когда вы обновляете сертификат CA, вы должны создавать новую пару ключей.