Windows 中的 Kerberos 通訊協定登錄專案和 KDC 組態密鑰

本文說明 Kerberos 第 5 版驗證通訊協定和金鑰發佈中心 (KDC) 組態的登錄專案。

適用於:Windows 11、Windows 10、Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012
原始 KB 編號: 837361

摘要

Kerberos 是用來驗證使用者或主機身分識別的驗證機制。 Kerberos 是 Windows 中服務的慣用驗證方法。

如果您執行的是 Windows,您可以修改 Kerberos 參數,以協助針對 Kerberos 驗證問題進行疑難解答,或測試 Kerberos 通訊協定。 若要這樣做,請新增或修改下列各節所列的登錄專案。

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需進一步了解如何備份及還原登錄的相關資訊,請參閱如何在 Windows 中備份及還原登錄

注意事項

完成 Kerberos 通訊協定的疑難解答或測試之後,請移除您新增的任何登錄專案。 否則,您的電腦效能可能會受到影響。

參數索引鍵下的登錄專案和值

本節中列出的登錄項目必須新增至下列登錄子機碼:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

注意事項

如果 [參數] 索引 鍵未列在 Kerberos 底下,您必須建立密鑰。

  • Entry:SkewTime

    • 類型:REG_DWORD

    • 默認值:5 (分鐘)

      此值是用戶端電腦與接受 Kerberos 驗證或 KDC 的伺服器之間允許的時間差異上限。

      注意事項

      在判斷 Kerberos 票證有效性以供重複使用時,會考慮 SkewTime。 如果到期時間小於目前時間 + SkewTime,則票證會被視為過期。 例如,如果 SkewTime 設定為 20 分鐘,且目前時間為 08:00,則任何到期時間在 08:20 之前的票證都會被視為已過期。

  • Entry:LogLevel

    • 類型:REG_DWORD

    • 預設值:0

      此值會指出事件是否記錄在系統事件記錄檔中。 如果此值設定為任何非零值,所有 Kerberos 相關事件都會記錄在系統事件記錄檔中。

      注意事項

      記錄的事件可能包含誤判,其中 Kerberos 用戶端會以不同的要求旗標重試,然後成功。 因此,當您看到根據此設定記錄的事件時,請勿假設您有 Kerberos 問題。 如需詳細資訊,請 參閱如何啟用 Kerberos 事件記錄

  • 專案:MaxPacketSize

    • 類型:REG_DWORD

    • 默認值:1465 (位元組)

      此值是 UDP (封包大小) 最大使用者數據報協定。 如果封包大小超過此值,則會使用 TCP。

      在 Windows Vista 和更新版本的 Windows 中,此值的預設值為 0,因此 Windows Kerberos 用戶端永遠不會使用 UDP。

  • Entry:StartupTime

    • 類型:REG_DWORD

    • 默認值:120 (秒)

      此值是 Windows 在 Windows 放棄之前等待 KDC 啟動的時間。

  • 專案:KdcWaitTime

    • 類型:REG_DWORD

    • 默認值:10 (秒)

      此值是 Windows 等候 KDC 回應的時間。

  • 專案:KdcBackoffTime

    • 類型:REG_DWORD

    • 默認值:10 (秒)

      如果前一次呼叫失敗,這個值就是連續呼叫 KDC 之間的時間。

  • Entry:KdcSendRetries

    • 類型:REG_DWORD

    • 默認值:3

      此值是客戶端嘗試連絡 KDC 的次數。

  • Entry:DefaultEncryptionType

    • 類型:REG_DWORD

      此值表示預先驗證的預設加密類型。 RC4 的預設值為 23 (十進位) 或0x17 (十六进制)

      當您想要使用 AES 時,請將值設定為下列其中一個值:

      • aes256-cts-hmac-sha1-96:18 或 0x12
      • aes128-cts-hmac-sha1-96:17 或 0x11

      此值表示預先驗證的預設加密類型。

  • Entry:FarKdcTimeout

    • 類型:REG_DWORD

    • 默認值:10 (分鐘)

      這是用來讓域控制器從域控制器快取中不同月臺失效的逾時值。

  • 專案:NearKdcTimeout

    • 類型:REG_DWORD

    • 默認值:30 (分鐘)

      這是用來使域控制器快取中相同站台中的域控制器失效的逾時值。

  • Entry:StronglyEncryptDatagram

    • 類型:REG_BOOL

    • 默認值:FALSE

      此值包含旗標,指出是否要對數據報封包使用128位加密。

  • Entry:MaxReferralCount

    • 類型:REG_DWORD

    • 預設值:6

      此值是用戶端在客戶端放棄之前所進行 KDC 轉介的數目。

  • Entry:MaxTokenSize

    • 類型:REG_DWORD

    • 默認值:12000 (十進位) 。 從 Windows Server 2012 和 Windows 8 開始,預設值為48000。

      這個值是 Kerberos 令牌的最大值。 Microsoft 建議您將此值設定為小於 65535。 如需詳細資訊,請參閱 當使用者屬於許多群組時,Kerberos 驗證的問題

  • 專案:SpnCacheTimeout

    • 類型:REG_DWORD

    • 預設值:15 分鐘

      清除SPN) 快取專案 (服務主體名稱時,系統會使用此值。 在域控制器上,SPN 快取已停用。 客戶端和成員伺服器會使用此值來淘汰並清除 (找不到SPN) 負快取專案。 例如, (有效的SPN快取專案,不是負快取) 在建立15分鐘後不會刪除。 不過, SPNCacheTimeout 值也可用來將 SPN 快取縮減為可管理的大小 - 當 SPN 快取達到 350 個專案時,系統會將此值 scavenge / cleanup 用於舊專案和未使用的專案。

  • 專案:S4UCacheTimeout

    • 類型:REG_DWORD

    • 預設值:15 分鐘

      此值是 S4U 負數快取專案的存留期,用來限制來自特定計算機的 S4U Proxy 要求數目。

  • 專案:S4UTicketLifetime

    • 類型:REG_DWORD

    • 預設值:15 分鐘

      此值是 S4U Proxy 要求所取得票證的存留期。

  • Entry:RetryPdc

    • 類型:REG_DWORD

    • 默認值:0 (false)

    • 可能的值:0 (false) 或任何非零值 (true)

      這個值表示如果用戶端收到密碼到期錯誤,用戶端是否會連絡主域控制器以取得驗證服務要求 (AS_REQ) 。

  • Entry:RequestOptions

    • 類型:REG_DWORD

    • 默認值:任何 RFC 1510 值

      此值表示在票證授與服務要求中是否有更多選項必須以 KDC 選項傳送 (TGS_REQ) 。

  • Entry:ClientIpAddresses

    • 類型:REG_DWORD

    • 默認值:0 (此設定為 0,因為動態主機設定通訊協定和網路位址轉譯問題。)

    • 可能的值:0 (false) 或任何非零值 (true)

      此值表示是否要在AS_REQ中新增用戶端 IP 位址,以強制 Caddr 字段在所有票證中包含 IP 位址。

  • Entry:TgtRenewalTime

    • 類型:REG_DWORD

    • 預設值:600 秒

      此值是 Kerberos 在嘗試更新票證授權票證之前, (TGT) 在票證到期之前等待的時間。

  • Entry:AllowTgtSessionKey

    • 類型:REG_DWORD

    • 預設值:0

    • 可能的值:0 (false) 或任何非零值 (true)

      此值表示會話金鑰是使用初始或跨領域 TGT 驗證來匯出。 基於安全性考慮,預設值為 false。

      注意事項

      在 Windows 10 和更新版本的 Windows 中使用中 Credential Guard,您就無法再啟用與應用程式共用 TGT 工作階段密鑰。

Kdc 機碼下的登錄專案和值

本節中列出的登錄項目必須新增至下列登錄子機碼:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc

注意事項

如果 Kdc 金鑰未列在 [服務] 底下,您必須建立金鑰。

  • 專案:KdcUseClientAddresses

    • 類型:REG_DWORD

    • 預設值:0

    • 可能的值:0 (false) 或任何非零值 (true)

      這個值表示是否要在 Ticket-Granting 服務回復 (TGS_REP) 中新增IP位址。

  • 專案:KdcDontCheckAddresses

    • 類型:REG_DWORD

    • 預設值:1

    • 可能的值:0 (false) 或任何非零值 (true)

      此值會指出是否會檢查TGS_REQ和 TGT 欄 Caddr 位的 IP 位址。

  • Entry:NewConnectionTimeout

    • 類型:REG_DWORD

    • 默認值:10 (秒)

      此值是初始 TCP 端點連線在中斷連線之前保持開啟以接收數據的時間。

  • Entry:MaxDatagramReplySize

    • 類型:REG_DWORD

    • 默認值:1465 (十進位、位元組)

      此值是TGS_REP和驗證服務回復 (AS_REP) 訊息中的UDP封包大小上限。 如果封包大小超過此值,KDC 會傳回「KRB_ERR_RESPONSE_TOO_BIG」訊息,要求用戶端切換至 TCP。

      注意事項

      增加 MaxDatagramReplySize 可能會增加 Kerberos UDP 封包被分散的可能性。

      如需此問題的詳細資訊,請參閱 如何強制 Kerberos 在 Windows 中使用 TCP 而非 UDP

  • 專案:KdcExtraLogLevel

    • 類型:REG_DWORD

    • 默認值:2

    • 可能的值:

      • 1 (十進位) 或0x1 (十六进制) :稽核安全性事件記錄檔中的未知SPN錯誤。 事件標識碼 4769 會以失敗的稽核記錄。
      • 2 (十進位) 或0x2 (十六进制) :記錄 PKINIT 錯誤。 這會將預設啟用的 KDC 警告事件識別碼 21 () 記錄到系統事件記錄檔。 PKINIT 是因特網工程工作組, (IETF) 因特網草稿 ,用於 Kerberos 中的初始驗證的公鑰密碼編譯
      • 4 (十進位) 或0x4 (十六进制) :記錄所有 KDC 錯誤。 這會記錄系統事件記錄檔) U2U 必要問題 (KDC 事件識別碼 24 範例。
      • 8 (十進位) 或0x8 (十六进制) :當要求 S4U2Self 票證的用戶沒有足夠的存取權給目標使用者時,在系統記錄檔中記錄 KDC 警告事件標識碼 25。
      • 16 (十進位) 或0x10 (十六进制) :在加密類型上記錄稽核事件 (ETYPE) 和錯誤的選項錯誤。 這個值表示 KDC 將寫入事件記錄檔以及在安全性事件記錄檔中稽核的資訊。 事件標識碼 4769 會以失敗的稽核記錄。