如何configurationAD CS以支持名称约束(RFC 2459中的4.2.1.11)?

我想弄清楚如何使用关键的扩展集合进行合格的从属 ,但我无法弄清楚如何在MSFT AD CS中做到这一点。

对于给定的证书,我如何确保在颁发的证书上正确设置了名称约束?

编辑

到目前为止完成的工作(请参阅编辑历史了解更多工作):

遵循这些指导,我在这里安装了一个子CA。

名称约束configuration在两个位置之一。 创build新的CA时,可以通过configurationCAPolicy.inf来强制实施名称约束,从而为该CA定义名称约束。 同样,如果您要创build合格的从属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" 

我在subCA上的capolicy.inf是这样的

 [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 

我在subCA和rootCA上的policy.inf是这样的

 [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] 

无论多less次我重新启动subCA,或重新安装subCA,或重新启动rootCA我无法得到从subCA(通过certutil转储)的请求中可见的名称限制,或者当我查看颁发的证书在MMC中。

我知道这是可能的,因为具有名称约束的转储在这里可用

微软刚刚发布了关于如何在AD CS中使用名称约束的文章

要将名称约束应用于挂起的策略,请运行以下命令

 Certreq -policy originalrequest.req policy.inf modifiedrequest.req 

originalrequest.req – 下级提供给父CA的原始请求文件

policy.inf – 包含要应用于请求的设置的策略文件

modifiedrequest.inf – 这是输出文件,将包含原始请求,并已由策略修改。 这个文件将被提供给父CA而不是originalrequest.req