2013-01-18 63 views
5

我正在使用mod_auth_kerb & Apache HTTPD根據Kerberos服務器對網站用戶進行身份驗證。我在我的Apache錯誤日誌中收到一條奇怪的錯誤消息。 (請注意,出於安全考慮,我已經更改了此帖子的主體,但格式保持不變)。打開調試級別輸出爲Apache讓我獲得更多的信息日誌:mod_auth_kerb主體解析錯誤

[debug] src/mod_auth_kerb.c(1932): [client x.x.x.x] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos 
[debug] src/mod_auth_kerb.c(1277): [client x.x.x.x] Acquiring creds for HTTP/[email protected] 
[debug] src/mod_auth_kerb.c(1470): [client x.x.x.x] Credentials cache FILE:/tmp/krb5cc_48 not found, create one 
[error] [client x.x.x.x] Could not parse principal HTTP/[email protected]/server_hostname: Malformed representation of principal (-1765328250) 
[debug] src/mod_auth_kerb.c(1598): [client x.x.x.x] Failed to obtain credentials for s4u2proxy 
[debug] src/mod_auth_kerb.c(1137): [client x.x.x.x] GSS-API major_status:000d0000, minor_status:0000000d 
[error] [client x.x.x.x] gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied) 

我想這個問題是用「/ server_hostname」在校長的結尾。在我的Kerberos密鑰表文件中,主體被列爲HTTP/[email protected]。我如何更改提交給mod_auth_kerb的委託人?還是有另一種方法來協調這個解析錯誤?

+1

你的問題不是很清楚。你是在談論密鑰表中的SPN(接受者)存在的上下文發起者主體還是主體? –

+0

我很確定我在談論上下文啓動器的主體。它有一個額外的「/主機名」在最後,我無法找到文檔。實際上,根據http://cryptnet.net/mirrors/docs/krb5api.html,「Kerberos名稱中的域可能不包含斜槓,冒號或空字符。」所以我很困惑爲什麼上下文啓動器主體的領域部分會包含斜線。 –

+0

我第二次發言,請看看這個:http://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-user/What-is-a-Kerberos-Principal_003f .html它定義了Kerberos主體的語法。你是否問過你的管理員?你使用什麼KDC? AD,MIT還是Heimdal? –

回答

6

原來是文件系統權限問題。密鑰表屬於root:root,並且權限被設置爲只對所有者讀/寫(0600)。因此,Apache HTTPD無法訪問密鑰表文件。我仍然不知道mod_auth_kerb是如何提供上下文啓動器主體的。但是,現在密鑰表可以被Apache讀取,一切正常。

+2

您可以在CentOS 7(及更早版本)上執行'setfacl -m u:apache:r--/etc/krb5.keytab'來修復它。 –