Я пытаюсь понять, как это сделать Квалифицированное подчинение с критическое расширение установлен, но я не могу понять, как это сделать в MSFT AD CS.
Для данного сертификата, как мне убедиться, что ограничения имени правильно установлены в выпущенном сертификате?
редактировать
Проделанная работа (дополнительные сведения см. В истории изменений):
Я установил здесь дополнительный ЦС следуя этим указаниям.
Ограничения имени настраиваются в одном из двух мест. При создании нового ЦС вы можете определить ограничения имени для этого ЦС, настроив CAPolicy.inf для наложения ограничений имени. Точно так же, если вы создаете квалифицированный сертификат подчиненного CA, вы должны определить ограничения имени в файле Policy.inf. В обоих случаях используется следующий синтаксис:
[NameConstraintsExtension] Include = NameConstraintsPermitted Exclude = NameConstraintsExcluded Critical = TrUe [NameConstraintsPermitted] DNS = "" email="" UPN="" [NameConstraintsExcluded] DNS = .nwtraders.com email = @nwtraders.com UPN = .nwtraders.com UPN = @nwtraders.com URI = ftp://.nwtraders.com DIRECTORYNAME = "DC=NWtraders, DC=com"
Мой capolicy.inf на subCA - это
[Version]
Signature="$Windows NT$"
[PolicyStatementExtension]
Policies=LegalPolicy
[LegalPolicy]
OID=1.2.3.4.1455.67.89.5
Notice="Legal Policy Statement"
URL=http://pki.bitclear.us/pki/cps.txt
[Certsrv_Server]
RenewalKeyLength=2048
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=20
LoadDefaultTemplates=0
AlternateSignatureAlgorithm=1
# ForceUTF8=0
[CRLDistributionPoint]
Empty=True
[AuthorityInformationAccess]
Empty=True
[BasicConstraintsExtension]
PathLength=1
Critical=Yes
[NameConstraintsExtension]
Include = NameConstraintsPermitted
Exclude = NameConstraintsExcluded
Critical = True
[NameConstraintsPermitted]
DirectoryName = "DC=gg, DC=Com"
email = @gg.com
UPN = .gg.com
UPN = @gg.com
#[EnhancedKeyUsageExtension]
#OID=1.3.6.1.5.5.7.3.4 ; Secure Email
#OID=1.3.6.1.4.1.311.20.2.2 ; Smart Card Logon
#Critical=No
# on a sub CA do this: Certutil –setreg Policy\CAPathLength 2
мой policy.inf в SubCA и rootCA - это
[Version]
Signature= "$Windows NT$"
[RequestAttributes]
CertificateTemplate = SubCA
[PolicyStatementExtension]
Policies = HighAssurancePolicy, MediumAssurancePolicy, LowAssurancePolicy
CRITICAL = FALSE
[HighAssurancePolicy]
OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.402
[MediumAssurancePolicy]
OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.401
[LowAssurancePolicy]
OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.400
[NameConstraintsExtension]
Include = NameConstraintsPermitted
Exclude = NameConstraintsExcluded
Critical = True
[NameConstraintsPermitted]
DirectoryName = "DC=g, DC=Com"
email = @g.com
UPN = .g.com
UPN = @g.com
[NameConstraintsExcluded]
Независимо от того, сколько раз я перезапускаю вспомогательный СА, или переустанавливаю вспомогательный СА, или перезапускаю rootCA, я не могу увидеть ограничение имени, видимое в запросе от вспомогательного СА (через certutil - dump) или когда я просматриваю выданный сертификат в MMC.
Я знаю, что это возможно, потому что дамп с ограничениями имени доступен здесь
Microsoft только что опубликовала эту статью о том, как использовать ограничения имени с AD CS
Чтобы применить ограничение имени к ожидающей политике, выполните следующую команду
Certreq -policy originalrequest.req policy.inf modifiedrequest.req
originalrequest.req
- исходный файл запроса, предоставленный подчиненным родительскому ЦС
policy.inf
- Файл политики, содержащий настройки, которые вы хотите применить к запросу.
modifiedrequest.inf
- Это выходной файл, который будет содержать исходный запрос и был изменен политикой. Этот файл будет передан родительскому ЦС вместо originalrequest.req