Chr*_*ski 5 smartcard ssl-certificate certificate-authority smime ad-certificate-services
我试图弄清楚如何使用关键扩展集进行合格从属,但我无法弄清楚如何在 MSFT AD CS 中执行此操作。
对于给定的证书,如何确保在颁发的证书上正确设置名称约束?
编辑
到目前为止完成的工作(有关完成的更多工作,请参阅编辑历史记录):
我安装了一个子CA在这里这些方向以下。
名称约束在两个位置之一配置。创建新 CA 时,您可以通过配置 CAPolicy.inf 来施加名称约束,从而为该 CA 定义名称约束。同样,如果您要创建合格的从属 CA 证书,您将在 Policy.inf 文件中定义名称约束。在这两种情况下,都使用以下语法:
Run Code Online (Sandbox Code Playgroud)[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
Run Code Online (Sandbox Code Playgroud)
我在 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]
Run Code Online (Sandbox Code Playgroud)
无论我重新启动 subCA、重新安装 subCA 或重新启动 rootCA 多少次,我都无法在来自 subCA 的请求(通过 certutil - dump)或查看颁发的证书时看到名称限制在 MMC 中。
微软刚刚发布了这篇文章如何将名称约束与 AD CS 结合使用的文章
\n\n要将名称限制应用于待处理的策略,请运行以下命令
\n\nCertreq -policy originalrequest.req policy.inf modifiedrequest.req\nRun Code Online (Sandbox Code Playgroud)\n\noriginalrequest.req\xe2\x80\x93 下级向父CA提供的原始请求文件
policy.inf- 包含您想要应用于请求的设置的策略文件
modifiedrequest.inf- 这是包含原始请求并已被策略修改的输出文件。该文件将被提供给父 CA 而不是originalrequest.req