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