无法从 Linux 使用 ActiveDirectory Kerberos 密钥表

Yve*_*tin 7 linux kerberos windows-server-2008-r2

我正在为完全用 Java(JLAN 项目)实现的Alfresco CIFS 协议配置 Kerberos 身份验证。这不是第一次了,我过去常常在一次拍摄中就设置好了。

在同一个网络中,使用ActiveDirectory Windows 2008R2和相同的程序,我已经成功完成了两个环境的设置,但生产环境给我带来了麻烦。

生产密钥表是ktpass在 ActiveDirectory 上使用RC4-HMAC生成的,就像其他环境一样。该帐户AlfrescoCifsP专用于生产和此唯一服务:

ktpass -princ cifs/myserver.mydomain.com@MYDOMAIN.COM
       -mapuser MYDOMAIN\AlfrescoCifsP -pass <password>
       -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out c:\temp\prod.keytab
Run Code Online (Sandbox Code Playgroud)

现在我尝试在RedHat 5.8 上使用 MIT Kerberos 库和1.6.1-70-el4版本的实用程序,但出现以下错误:

$ kinit -k -t prod.keytab cifs/myserver.mydomain.com
kinit(v5): Key table entry not found while getting initial credentials
Run Code Online (Sandbox Code Playgroud)

以下是我检查过的(多次):

  • 我的krb5.conf默认领域设置没问题
  • 我可以打开prod.keytab使用ktutil,并列出了插槽cifs/myserver.mydomain.com
  • 我可以使用密码和命令进行身份验证 kinit cifs/myserver.mydomain.com
  • kvno cifs/myserver.mydomain.com 返回与 keytab 条目相同的密钥号
  • 我还删除了 ActiveDirectory 帐户并再次执行此操作。结果还是一样。

所以一切都为了成功。两个服务帐户成功,第三个失败。唯一的区别可能是 SPN 长度比其他长度稍长,但远小于 260 个字符的 SPN 限制。

我已经跟踪kinit -k -t prod.keytab cifs/...命令,我刚刚看到了对 keytab 文件的读取操作,就在错误消息输出到 stderr 的后面。

在类似环境中是否有任何已知问题与我的问题相匹配?

如何诊断此问题的根源?

造成这种失败的主要原因是什么?

我应该尝试什么才能找到出路?

Yve*_*tin 4

通过网络捕获,我的客户管理员发现了 Novell 记录的匹配问题: http: //www.novell.com/support/viewContent.do? externalId=7005039&sliceId=1

我已将以下几行添加到我的文件中krb5.conf,以解决 kerberos 1.6.1 库的问题:

 default_tkt_enctypes = rc4-hmac
 default_tgs_enctypes = rc4-hmac
Run Code Online (Sandbox Code Playgroud)

在我看来,这些行对于最近的 MIT Kerberos 库来说并不是必需的。