我正在想办法合格的从属关系与临界延伸设置,但我不知道如何在 MSFT AD CS 中执行此操作。
对于给定的证书,如何确保在颁发的证书上适当地设置名称约束?
编辑
迄今已完成的工作(有关更多已完成的工作,请参阅编辑历史):
我在这里安装了一个子 CA按照这些指示。
名称约束在两个位置之一配置。创建新 CA 时,您可以通过配置 CAPolicy.inf 来施加名称约束,从而为该 CA 定义名称约束。同样,如果您要创建合格的从属 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]
无论我多少次重新启动子 CA、重新安装子 CA 或重新启动根 CA,我都无法在来自子 CA 的请求(通过 certutil - dump)中或在查看 MMC 中颁发的证书时获得可见的名称限制。
我知道这是可能的,因为带有名称约束的转储可在此处获得
答案1
微软刚刚发布了这篇文章关于如何在 AD CS 中使用名称约束
要将名称约束应用于待定策略,请运行以下命令
Certreq -policy originalrequest.req policy.inf modifiedrequest.req
originalrequest.req
– 下属机构向上级 CA 提供的原始申请文件
policy.inf
- 包含要应用于请求的设置的策略文件
modifiedrequest.inf
- 这是包含原始请求的输出文件,已根据策略进行了修改。此文件将提供给父 CA,而不是originalrequest.req