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

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

我正在想办法合格的从属关系临界延伸设置,但我不知道如何在 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

相关内容