Apache Kerberos 身份驗證:KDC 不支持加密類型
我在這個問題上發布了一個新執行緒,因為我在這裡找到的所有解決方案都不適合我。
我正在嘗試配置 apache2 以通過密鑰表在 AD2012 伺服器上使用 Kerberos 進行身份驗證。
首先,我啟動了我可以在 AD 中進行的所有加密
msDS-EncryptedSupportedTypes
這是我的客戶(debian)
krb5.conf
:[logging] default = FILE:/var/log/krb5.log [libdefaults] default_realm = REALM.LOCAL kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true # for testing purpose only allow_weak_crypto = true default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 [realms] REALM.LOCAL = { kdc = kdc.realm.local admin_server = kdc.realm.local default_domain = realm.local } [domain_realm] .realm.local = REALM.local realm.local = REALM.LOCAL
這是我使用的密鑰表:
klist -kte /etc/apache2/http.keytab
Keytab name: FILE:/etc/apache2/http.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------------- 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (des-cbc-crc) 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCALS (des-cbc-md5) 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (arcfour-hmac) 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (aes256-cts-hmac-sha1-96) 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (aes128-cts-hmac-sha1-96)
如果我使用 keytab 向 KDC 進行身份驗證,一切正常:
kinit -Vkt /etc/apache2/http.keytab HTTP/server.realm.local
Authenticated to kerberos v5
列表 -e
Ticket cache: FILE:/tmp/krb5cc_0 Default principal: HTTP/server.realm.local@REALM.LOCAL Valid starting 06/04/2017 20:32:09 07/04/2017 06:32:09 krbtgt/REALM.LOCALS@REALM.LOCAL renew until 07/04/2017 20:32:08, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
我現在配置一個
.htaccess
來測試這樣的身份驗證:AuthType Kerberos AuthName "Kerberos Login" KrbAuthRealm REALM.LOCAL Krb5KeyTab /etc/apache2/http.keytab KrbServiceName HTTP/server.realm.local Require valid-user
添加當我嘗試進行身份驗證時,我在日誌中有這個:
$$ debug $$src/mod_auth_kerb.c(1939):$$ client 192.168.4.16 $$kerb_authenticate_user 使用使用者 (NULL) 和 auth_type Kerberos 輸入 $$ debug $$src/mod_auth_kerb.c(1691):$$ client 192.168.4.16 $$使用 KRB5 GSS-API 驗證客戶端數據 $$ debug $$src/mod_auth_kerb.c(1707):$$ client 192.168.4.16 $$客戶沒有將他們的憑證委託給我們 $$ debug $$src/mod_auth_kerb.c(1735):$$ client 192.168.4.16 $$警告:收到的令牌似乎是 NTLM,Kerberos 模組不支持。檢查您的 IE 配置。 $$ debug $$src/mod_auth_kerb.c(1138):$$ client 192.168.4.16 $$GSS-API 主要狀態:00010000,次要狀態:00000000 $$ error $$ $$ client 192.168.4.16 $$gss_accept_sec_context() 失敗:請求了不受支持的機制(,未知錯誤)
網路跟踪顯示,
TGS_REQ
正文在 AES256 中加密,而PA-DATA
. 但我收到KRB5KDC_ERR_ETYPE_NOSUPP
了回應。如果我為服務手動驗證,我會得到這個:
啟動使用者名
kvno HTTP/server.realm.local@REALM.LOCAL
列表 -e
Valid starting 06/04/2017 20:32:09 07/04/2017 06:32:09 krbtgt/REALM.LOCAL@REALM.LOCAL renew until 07/04/2017 20:32:08, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96 06/04/2017 20:35:00 07/04/2017 06:32:09 HTTP/server.realm.local@REALM.LOCAL renew until 07/04/2017 20:32:08, Etype (skey, tkt): des-cbc-crc, des-cbc-md5
我不知道 DES 加密是從哪裡來的。
關於什麼可能是錯的任何見解?我怎樣才能進一步調查?
**更新:**我現在懷疑支持 DES 的 AD 服務帳戶。對於我閱讀的內容,它可能會禁用任何其他密碼算法。我無權訪問 AD,所以現在無法測試。
這確實是由於啟動了 AD 中的 DES 支持。這實際上覆蓋了任何其他密碼算法。
因此,在服務帳戶上禁用它會使協商在 AES256 中工作。