У меня работает 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
флаг ДОЛЖЕН БЫТЬ ОТКЛЮЧЕН.
Есть два варианта:
Я бы посоветовал выбрать второй вариант, потому что в течение следующих 6 месяцев вы столкнетесь с большим количеством проблем и будете вынуждены обновить сертификат CA. В Интернете есть много статей, в которых предлагается обновить сертификат CA путем повторного использования существующей пары ключей. Это решение менее болезненно, но может вызвать проблемы с проверкой цепочки. Каждый раз, когда вы обновляете сертификат CA, вы должны создавать новую пару ключей.