创建一个密钥表以在Windows中与kinit一起使用

rol*_*nds 5 windows authentication kerberos keytab ktpass

我正在编写一个pGina插件,用于在登录时从我们的KDC获取AFS令牌和Kerberos TGT,同时写作我注意到kinit的一个"功能"是它不会让你提供任何输入,除非它来自键盘,我想到了只是重定向标准输入...

有人建议使用keytab文件作为主体,这看起来非常简单,直到我意识到我只在linux上使用kutil并且遇到了ktpass.exe的Windows版本的困难.我已经反复尝试使用大量参数组合来创建keytab但到目前为止绝对没有成功,我发出的当前命令是:

ktpass /out key.tab /mapuser user$@MERP.EDU /princ user.merp.edu@MERP.EDU /crypto RC4-HMAC-NT /ptype KRB5_NT_PRINCIPAL /pass mahpasswordlol /target MERP.EDU

不幸的是,这些产出都是

Using legacy password setting method

FAIL: ldap_bind_s failed: 0x31

根据我的研究,根据我的研究是认证/加密问题,我已经尝试了其他DES设置,但这似乎也没有用......任何人都有任何经验/想法如何这可能工作?

Ric*_*man 10

ktpass.exe确实很糟糕; 我不使用它.相反,只需在Unix上使用ktutil,使用密码独立创建匹配的keytab,例如:

$ ktutil
ktutil:  addent -password -p foo@BAR -k 1 -e aes128-cts-hmac-sha1-96
Password for foo@BAR:
ktutil:  l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    1                                  foo@BAR
ktutil:  wkt /tmp/zz
$ klist -ek /tmp/zz
Keytab name: WRFILE:/tmp/zz
KVNO Principal
---- --------------------------------------------------------------------------
   1 foo@BAR (aes128-cts-hmac-sha1-96)
Run Code Online (Sandbox Code Playgroud)

LDAP绑定错误表示ktpass无法向域控制器验证您的身份; 如果发生这种情况,您是否登录了域帐户?它必须是域帐户,而不是本地帐户(并且必须授权对AD进行必要的更改,但缺少这样会导致权限错误而不是绑定).

FWIW,我们采取不同的方法:我们在Unix和AD领域之间使用跨领域信任.用户登录后获得的AD TGT足以获取Unix领域中的服务凭证; 例如,我可以用腻子SSH到Unix主机,火狐/ Chrome浏览器/ IE浏览器来验证Unix的Web服务(阿帕奇/ mod_auth_kerb所)等.

  • 当您使用交叉信任时,您是否重叠了 UNIX 和 WINDOWS DNS 名称,或者您是否设置了一个子域来包含您的 UNIX 主机? (2认同)
  • 我们的重叠;也就是说,没有简单的规则可以区分两个领域的主机名。但是,如果可行,我建议为每个域使用不重叠的域,例如 *.WIN.FOO.COM 和 *.UNIX.FOO.COM;我们的混合设置是我们现在无法更改的遗留基础设施的结果。混合设置需要相当多的复杂性,以双方的引用和/或静态域/领域配置的形式存在,以确保所有票证请求都到达正确的位置。我最近在一个全新的部署中使用了不同的域,以避免所有这些。 (2认同)