Ssl-Certificate
如何配置 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]
無論我重新啟動 subCA、重新安裝 subCA 或重新啟動 rootCA 多少次,我都無法在來自 subCA 的請求中看到名稱限制(通過 certutil - dump),或者當我查看頒發的證書時在 MMC 中。
我知道這是可能的,因為此處提供了帶有名稱限制的轉儲
微軟剛剛發布了這篇關於如何在 AD CS 中使用名稱約束的文章
要將名稱約束應用於掛起的策略,請執行以下命令
Certreq -policy originalrequest.req policy.inf modifiedrequest.req
originalrequest.req
– 從屬CA提供給父CA的原始請求文件
policy.inf
- 包含要應用於請求的設置的策略文件
modifiedrequest.inf
- 這是包含原始請求並已被策略修改的輸出文件。此文件將提供給父 CA 而不是originalrequest.req