6

我正在使用 mod_auth_kerb 和 Apache HTTPD 针对 Kerberos 服务器对网站用户进行身份验证。我在 Apache 错误日志中收到一条奇怪的错误消息。(请注意,出于安全原因,我在这篇文章中更改了主体,但格式保持不变)。打开 Apache 的调试级别输出使我能够获得更多信息日志:

[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/kerberos_server.example.com@REALM.EXAMPLE.COM
[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/kerberos_server.example.com@REALM.EXAMPLE.COM/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/kerberos_server.example.com@EXAMPLE.COM. 如何更改提交给 mod_auth_kerb 的主体?还是有另一种方法来协调这个解析错误?

4

1 回答 1

8

原来是文件系统权限问题。密钥表由 root:root 拥有,并且权限设置为仅所有者的读/写 (0600)。因此,Apache HTTPD 无法访问 keytab 文件。我仍然不知道 mod_auth_kerb 是如何提出上下文启动器主体的。但是,现在 Apache 可以读取密钥表,一切正常。

于 2013-01-23T16:20:35.423 回答