如何手动获取 Kerberos 服务票证?

如何手动获取 Kerberos 服务票证?

我已经注册了一个 SPN,现在我想尝试获取它的票证。我知道有 Linux kvno 可以做到这一点,Windows 上有类似的东西吗?

答案1

在 Linux 中,您可以使用“kinit”来验证指定的 SPN。此工具会创建 Kerberos AS 票证并将其存储在缓存中。出于安全原因,此缓存供操作系统组件使用。

为了在 Windows 中安装 kinit,我安装了最新的 Java JDK(http://www.oracle.com/technetwork/java/javase/downloads/index.html)。
语法:kinit <SPN>。应用程序将要求您输入密码。如果您输入正确的密码,您将创建 AS 票证并将其存储在 Kerberos 缓存中。

然后您可以使用列出 Kerberos 缓存的内容klist -c

答案2

kinit与领域等效的窗口CORP.CONTOSO.COM是:

  1. 将 SAMAccountName 添加为该领域的用户凭证Control Panel > User Accounts > Credential Manager > Windows Credentials
    凭证管理器图片
    注1:您必须准确使用领域。您不能使用域名或 UPN。例如:CORP.CONTOSO.COM\jsmith可以,但CORP\jsmith[email protected]失败。
    笔记2:也可以使用cmdkey /add:*.CORP.CONTOSO.COM /user:CORP.CONTOSO.COM\jsmith /pass
    注3:这些已保存的凭据将无限期地保留在您的漫游配置文件中。如果不需要,请随后将其删除。
  2. 连接到服务(使用 ssh、CIFS、RDP/TERMSERV 等...)并验证是否已使用 创建服务票证klist。或者,您可以使用 明确请求票证klist get SPN(例如:使用 为 dc1 上的 CIFS请求票证klist get cifs/dc1.CORP.CONTOSO.COM

或者,您可以使用 runas 进行临时连接(避免在凭证管理器中保存凭证):

  1. 使用新的访问令牌runas /netonly /user:CORP.CONTOSO.COM\jsmith cmd开始cmd
  2. 连接到服务并验证 Kerberos 身份验证是否成功klist

有关的:

答案3

klist get SPN按照尝试微软的 klist 文档

答案4

也可以使用 ktpass 生成 Kerberos 票证。在 Windows 提示符下(假设已安装 KDC)

ktpass -out <file>.keytab -mapuser <username>@REALM-IN-CAPS  -pass <of-user>  -crypto all  -ptype KRB5_NT_PRINCIPAL  -princ spn-of-user@REALM-IN-CAPS

这将*.keytab在当前工作目录中生成。

相关内容