我正在为配置 Kerberos 身份验证Alfresco CIFS 协议完全用 Java 实现(JLAN 项目)。这不是第一次,我以前总是一次性就设置好。
在同一网络中,使用 ActiveDirectoryWindows 2008R2和同样的程序,我已经成功地完成了两个环境的设置,但生产环境给我带来了麻烦。
生产密钥表由ktpass
ActiveDirectory 生成,使用RC4-HMAC与其他环境一样。该帐户AlfrescoCifsP
专用于生产,并且仅用于此服务:
ktpass -princ cifs/[email protected]
-mapuser MYDOMAIN\AlfrescoCifsP -pass <password>
-crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out c:\temp\prod.keytab
现在我尝试使用它红帽 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
以下是我检查过的内容(多次):
- 我的
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 的错误消息的输出。
在类似的环境中是否存在与我的麻烦相似的已知问题?
如何诊断该问题的根源?
造成这种失败的主要原因是什么?
我应该尝试什么才能找到出路?
答案1
通过网络捕获,我的客户的管理员发现了 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
在我看来,这些行对于最近的 MIT Kerberos 库来说不是必需的。
答案2
首先,您需要验证您的计算机是否运行了 SPN 引用的服务,是否与域控制器(“打开网络和共享中心”中的域网络)建立了信任关系;确定后,再次生成票证并按如下方式执行 kinit:
kinit-k-t prod.keytab cifs/[电子邮件保护]
结论:你错过了 REALM (@MYDOMAIN.COM)
注意:适用于 Windows 2008 EE X64 R2