2

我正在尝试针对 kerberos 对我的 apache 进行身份验证。我有两个网站在同一台服务器上运行,我使用 VirtualHosts 来实现这一点,并将 DNS 设置为该服务器有两个名称,以便每个网站都有一个单独的名称。我最近添加了一个新的 ldap/Kerberos 服务器并尝试将我的一个网站连接到它,但我未能获得正确的凭据以使其正常工作。添加一些调试后,我发现 apache 查找的是 HTTP/fist-server-name 而不是 HTTP/second-server-name,因此在 Kerberos 数据库和 keytab 中找不到正确的主体。如何强制 apache 对第二个服务器名称进行检查以验证来自我的第二个网站的调用?看起来在 apache 配置中添加 ServerName 属性是不够的!我可以通过更改主机文件中的服务器名称顺序来做到这一点,

谢谢。

4

3 回答 3

6

我假设您正在使用 mod_auth_kerb。您需要添加:

KrbServiceName Any

到您的 Apache 配置。这将告诉 mod_auth_kerb 接受对其使用的密钥表中存储有密钥的任何主体的身份验证,而不是假设将使用什么主体并且只接受对该主体的身份验证。

于 2013-03-17T10:02:23.167 回答
4

您需要确定要为每个网站使用的 Kerberos SPN。您可以通过运行以下命令检查密钥表中列出的 SPN:klist -k <Keytab>-- 确保您正在检查 Apache 使用的密钥表文件。

VirtualHost声明中,您需要更改KrbServiceName值以匹配您从 keytab 中确定的值。重新启动 Apache,它应该在与 Kerberos 通信时开始使用它。

一个例子看起来像:

 KrbServiceName HTTP/yourservice.domain@REALM.COM

确保 AD 具有匹配的服务帐户和 SPN,并且它可以通过 DNS 解析回 Apache 服务器。

于 2013-04-04T23:41:56.780 回答
1
于 2017-12-24T00:55:52.223 回答