我使用 X.509 用戶端憑證透過相互 TLS 對一組 Windows 用戶端進行身份驗證。哪些客戶端屬於該群組應該以某種方式在 AD 中進行管理,例如透過群組成員資格或父 OU。
注意:此問題適用於電腦證書,而不適用於使用者證書。即任何使用者在從此類電腦啟動 HTTPS 請求時都應該能夠使用此憑證。 (這是對任何使用者登入方法的補充,它不是 mTLS 身份驗證方案的一部分。)
伺服器應該能夠知道進行身份驗證的客戶端電腦是該群組的成員。伺服器是基於 Linux 的容器,而不是 AD/網域的一部分,因此我們擁有的只是 X.509 憑證中的資訊。
Windows 憑證範本是否提供任何方法來傳達此類聲明作為 X.509 證書的一部分?似乎我可以限制可以獲得此類證書的計算機集,但是我找不到一種方法來以允許伺服器識別它們的方式標記這些證書。
- X.509 憑證不包含管理範本名稱或 ID,因此我也無法設定伺服器來檢查它。
- 配置主題的靈活性似乎有限,特別是沒有方法將任何 AD 資訊對應到主題欄位。那將是理想的 - 我在這裡錯過了什麼嗎?
- 我正在考慮為這些模板使用特定的中間 CA,但這對於這樣的基本要求似乎太複雜了。
也許 X.509 證書的另一個方面可以透過模板進行設定?或者我可以使用與群組/OU 不同的聲明嗎?
答案1
答案是不行。群組成員身分是相當動態的屬性,而不是靜態的,也不是憑證持有者身分的一部分。因此,您無法將群組成員資格包含到憑證中,因為此資訊不屬於身分。每次團體成員資格變更時,都必須重新頒發證書。證書的有效期限相當長。這是一個非常有缺陷的解決方案。
即任何使用者在從此類電腦啟動 HTTPS 請求時都應該能夠使用此證書
只有在從本機系統或網路服務帳戶下執行的應用程式發送 TLS 請求時,此功能才有效。例如,如果要使用此類證書,則必須透過原始程式碼明確配置 TLS 用戶端以使用非預設用戶端證書。
伺服器是基於Linux的容器,不屬於AD/網域的一部分
有趣的是,基於 Linux 的伺服器應該如何驗證實際的群組成員資格?
雙向 TLS 中的用戶端憑證是驗證方法。證書中的欄位會對應到必須連接到的帳戶資訊伺服器。
由於您的 Linux 伺服器不屬於任何 AD,因此它們無法將用戶端憑證綁定到 AD 使用者帳戶並驗證群組成員資格。伺服器甚至無法判斷這樣的組織是否真的存在。必須有一個可供 Linux 伺服器使用的單獨身分資料庫,且 Linux 伺服器必須以某種方式將用戶端憑證綁定到該單獨身分資料庫中的身分。並且只有這個單獨的身份資料庫中可用的資訊才能用於客戶端授權。
這意味著您的要求:
電腦的群組成員資格應在 AD 中管理。
和
伺服器是基於Linux的容器,不屬於AD/網域的一部分
是互相排斥的,不能一起使用。要么使 Linux 伺服器具有 AD 感知能力,要么在憑證中包含有關 Linux 伺服器可用的身份資訊。我強烈避免將團體成員資格包含在證書中。群組成員身分應用於短期令牌,而不是長期憑證。