域控制器自動註冊 - 更改頒發 CA
我們正在清理我們的 Windows PKI/CA 環境並用新伺服器替換我們的根 CA。目前的根 CA 多年來一直在頒發以下證書模板(除了從屬證書模板):
- Kerberos 身份驗證
- 域控制器身份驗證(我們知道這已被 Kerberos 身份驗證模板取代)
- 域控制器(我們知道現在已被取代)
- 目錄電子郵件複製
從屬 CA 還具有“已發布”的模板。
我們知道這並不理想,新的根 CA 將被設置為僅頒發從屬證書模板。
問題:
在從根CA頒發的上述模板中刪除(不刪除模板本身,只是將其從該根CA頒發的模板中刪除),當域控制器自動更新上面的那些證書時,他們會知道查看從屬CA根據域控制器所需的模板更新/頒發新證書? 或者我們還需要做些什麼來主動向環境中的 DC 頒發新證書?現有證書不會被吊銷,因此在重新註冊之前它們將一直有效,但我們很好奇如果原始證書是由舊根 CA 頒發的,重新註冊是否會失敗。我們不確定 DC 是如何“決定”的
附加附加問題:
您知道我們替換 rootCA 後從現有 SubCA 頒發的現有證書會有什麼影響嗎?我們正在根據以下內容將 rootCA 遷移到一個新名稱:逐步將 CA 遷移到新伺服器——評論中的其他人基本上問了我關於現有證書的問題,但沒有回复。我的猜測是,只要客戶端在其受信任的根儲存中仍然有舊的 RootCA,在中間儲存中仍然有 SubCA,他們應該仍然有一個良好的證書鏈,直到證書過期,但我想提前知道的時間。
當域控制器自動更新上述證書時,他們是否知道根據域控制器所需的那些模板查看從屬 CA 以更新/頒發新證書?
是的。註冊客戶端將首先列舉所有支持從 AD 請求模板的 CA。然後客戶端將從該列表中選擇隨機 CA 來發送續訂請求。也就是說,從根 CA 中刪除所有模板很好,客戶端將嘗試另一個支持此模板的可用 CA。
ps 雖然我會考慮將企業根 CA(加入域)轉換為獨立根 CA(工作組成員),這樣您就可以在大部分時間關閉根 CA,因為它與線上無關。您將每年打開一次或兩次以發布 CRL 或當您需要簽署從屬 CA 證書時。但這是另一個問題,只是遵循最佳實踐的好方法。
更新 1 (21.01.2022)
Microsoft Docs 頁面未顯示有關它如何列舉 CA 等的任何資訊。
註冊客戶端呼叫通用IX509Enrollment::Enroll執行一系列呼叫(非常簡化的步驟):
CA發現使用$$ MS-XCEP $$
- 從系統資料庫載入策略列表。
- 按PolicyId屬性對策略進行分組。
- 組按成本屬性排序,然後按身份驗證屬性排序。Kerberos 身份驗證具有更高的優先級。其餘組以任意順序放置。
- 通過呼叫IPolicy::GetPoliciesResponse web 方法查詢每個策略。響應包含 CA Web 服務列表
- 響應包含:呼叫者有權註冊的證書模板列表和 CA 端點列表(實現$$ MS-WSTEP $$協議)以及有關支持的證書模板的資訊。
- 準備空列表。
- 對於每個排序的策略組:
- 按成本屬性排序 CA ,然後按身份驗證屬性。Kerberos 身份驗證具有更高的優先級。其餘組以任意順序放置。消除呼叫者沒有權限的 CA。以相同的順序將有序的 CA 附加到列表中。
- 重複 (8) 直到所有 CA 都添加到列表中。
- 對於剩餘列表中的每個 CA:
- 生成證書請求並呼叫ICertRequest::Submit將請求送出給選定的 CA。
- 重複 (11) 直到呼叫成功。
CA發現使用$$ MS-WCCE $$
- 執行ICertConfig::Next的 do-while 循環呼叫以列舉所有自動發現的 CA(本地、在 AD 中註冊、儲存在共享目錄中等)。這將生成所有可能的 CA 的列表。
- 對於每個 CA 客戶端,都使用作為參數進行
ICertRequest2::GetCAProperty
呼叫。消除離線 CA。CR_PROP_TEMPLATES``propID
- (1)中獲得的過濾器列表,用於排除不支持請求模板的 CA。
- 如果配置了CA 站點感知,則篩選與客戶端位於同一 ADDS 站點中的 CA 列表。如果未配置 CA 站點感知或客戶端所在的同一 ADDS 站點中沒有 CA,則不要過濾。
- 呼叫ICertRequest::GetCACertificate以檢索 CA 證書並驗證每個證書。消除證書無效或不受信任的 CA。
- 從剩餘列表中選擇任意 CA,生成證書請求並呼叫ICertRequest::Submit將請求送出給選定的 CA。
同樣,註冊客戶端發現 CA 並送出證書請求是一個簡化的任務序列。
更新 2
您知道我們替換 rootCA 後從現有 SubCA 頒發的現有證書會有什麼影響嗎?
只要客戶端信任根 CA,實際上什麼都沒有。