11

希望对 kinit 和 keytab 文件的使用有更多的了解。例如,如果我已经为服务生成了一个 keytab 文件(该服务通过ktpass -mapuserto注册到活动目录someuseraccount

ktab -k "mykeytab" -a <someprincipal>

USERA当用户调用登录到 Windows 并使用此 keytab 作为 kinit 的输入参数时,真正发生了什么?

kinit -k -t "mykeytab" <someprincipal>

是否 为当前登录的或为当前登录的kinit生成初始凭据?someprincipalUSERA

希望你能解开我的这个困惑。谢谢

4

1 回答 1

14

这掩盖了许多重要的细节,但基本上你从 KDC 得到的只是一个加密的 blob。

kerberos KDC 不存储您的密码,而是一个密钥。当您开始在幕后发生的事情是您正在向 KDC 索取一张票以要求更多的 kerberos 票时,它会使用您的密钥加密该票。

如果您知道您的密钥,您可以解密该 blob 并使用它来访问其他服务。

当您使用密码启动时,kerberos 使用“字符串到密钥”算法将您的密码转换为 KDC 使用的密钥。密钥表只是将密钥存储在本地文件中的一种方式。

因此,当您使用 keytab 进行 kinit 时,它使用 keytab 中的密钥来解密 blob。就 kerberos 协议而言,使用 keytab 进行 kinit 和使用密码之间确实没有区别。两者最终都使用相同的密钥来解密票证。

因此,在您使用 kinit 的 keytab 之后,您在 keytab 中有一个主体的 kerberos 票证。可以将与 kinit 一起使用的密钥表视为将密码存储在文件中。

于 2014-08-11T23:11:56.607 回答