2012-06-07 49 views
5

我正在编写一个pGina插件,以便在登录时从我们的KDC获得AFS令牌和Kerberos TGT,同时我发现kinit的'特性'是它不会让你提供任何输入除非它来自键盘,那么我的想法只是重定向标准输入...创建一个keytab在Windows下与kinit一起使用

有人建议使用主体的keytab文件,这似乎超级简单,直到我意识到我只会在linux上使用kutil并且在使用ktpass.exe的Windows版本时遇到困难。我已经有大量的参数组合的多次试图创建一个密钥表,但都没有绝对的成功至今,当前的命令,我发出的是:

ktpass /out key.tab /mapuser [email protected] /princ [email protected] /crypto RC4-HMAC-NT /ptype KRB5_NT_PRINCIPAL /pass mahpasswordlol /target MERP.EDU

不幸的是这一切的输出是

Using legacy password setting method

FAIL: ldap_bind_s failed: 0x31

根据我的研究,这是一个认证/加密问题,我已与其他d试了一下ES设置,但这似乎也不工作...任何人都有任何经验/想法如何这可能工作?

+0

在Windows 2008 R2 Active Directory及更高版本中,DES被默认禁用。当你尝试这个时候,这可能就是那个特定方面的问题。 –

回答

8

ktpass.exe确实很糟糕;我不使用它。所以,应该使用ktutil在Unix上创建一个匹配的密钥表独立使用的密码,例如:

$ ktutil 
ktutil: addent -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96 
Password for [email protected]: 
ktutil: l 
slot KVNO Principal 
---- ---- --------------------------------------------------------------------- 
    1 1         [email protected] 
ktutil: wkt /tmp/zz 
$ klist -ek /tmp/zz 
Keytab name: WRFILE:/tmp/zz 
KVNO Principal 
---- -------------------------------------------------------------------------- 
    1 [email protected] (aes128-cts-hmac-sha1-96) 

LDAP绑定错误指示的ktpass无法验证你的域控制器;当这种情况发生时,您是否登录了域帐户?它必须是一个域帐户,而不是一个本地帐户(它必须被授权对AD进行必要的更改,尽管缺乏这会给权限错误而不是绑定)。

FWIW,我们采取了不同的方法:我们在Unix和AD领域之间使用跨领域信任。用户登录后的AD TGT就足以获得Unix领域中服务的凭证;例如,我可以使用PuTTY将SSH SSH转换为Unix主机,Firefox/Chrome/IE以对Unix Web服务(Apache/mod_auth_kerb)进行身份验证等。

+0

当您使用交叉信任时,您是否覆盖UNIX和WINDOWS DNS名称,或者您是否设置了子域以包含UNIX主机? –

+1

我们重叠;也就是说,没有简单的规则可以区分两个领域的主机名称。但是,如果可行,我建议为每个域使用不重叠的域,例如* .WIN.FOO.COM和* .UNIX.FOO.COM;我们的混合架构是我们现在无法改变的传统基础架构的结果。为了确保所有票务请求都能到达正确的位置,混合设置需要双方的引荐和/或静态域/领域配置形式的相当复杂的操作。我最近在全新的部署中使用了不同的域名,以避免这一切。 –

相关问题