希望对kinit和keytab文件的使用有更多的了解例如,如果我已经为一个服务(由ktpass
、-mapuser
到someuseraccount
注册到活动目录的服务)生成了一个keytab文件
ktab -k "mykeytab" -a <someprincipal>
当一个名为USERA
的用户登录到Windows并使用这个keytab作为kinit的输入参数时,真正发生了什么?
kinit -k -t "mykeytab" <someprincipal>
kinit
是否为someprincipal
或当前登录的USERA
生成初始凭据?
希望你能澄清我的这个困惑。由于
这掩盖了许多重要的细节,但基本上您从KDC获得的只是一个加密的blob。
kerberos KDC不存储您的密码,而是存储一个密钥。当您发现在幕后发生的事情是您向KDC请求一个票证以请求更多的kerberos票证时,它会用您的密钥加密该票证。
如果你知道你的秘密密钥,你可以解密blob并使用它来访问其他服务。
当您使用密码时,kerberos使用"字符串到密钥"算法来转换您的密码KDC使用的密钥的密码。keytab只是将秘密密钥存储在本地文件中的一种方法。
因此,当您使用keytab时,它使用keytab中的密钥来解密blob。就kerberos协议而言,使用keytab进行kinit和使用密码之间实际上没有区别。两者最终都使用相同的秘钥来解密票据。
因此,在您为kinit使用keytab之后,您在keytab中拥有了主体的kerberos票据。与kinit一起使用的keytab可以被认为是在文件中存储密码。