创建 keytab 文件

2023年12月13日

ID 183739

如果您已经为单点登录身份验证创建了 keytab 文件,您可以使用此文件在代理服务器上配置 Kerberos 身份验证。

您可以使用相同的用户账户在集群的所有节点上进行身份验证。为此,您必须为这些节点中的每一个创建一个包含服务主体名称 (SPN)keytab 文件。创建 keytab 文件时,必须使用属性生成(哈希函数修饰符)。

生成的盐必须使用您选择的方法进行保存,以便随后将新的 SPN 添加到 keytab 文件中。

您还可以为要为其配置 Kerberos 身份验证的每个集群节点创建单独的 Active Directory 用户账户。

使用域管理员账户,在域控制器服务器或属于该域的 Windows Server 计算机上创建 keytab 文件。

要使用单个用户账户创建 keytab 文件:

  1. 在“Active Directory 用户和计算机”管理单元中,创建一个用户账户,例如 control-user
  2. 要使用 AES256-SHA1 加密算法,请在 Active Directory 用户和计算机管理单元中执行以下操作:
    1. 打开创建的账户的属性。
    2. 账户选项卡中,选择此账户支持 Kerberos AES 256 位加密复选框。
  3. 使用 ktpass 实用程序为 control-user 创建 keytab 文件。为此,请在命令行运行以下命令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<控制节点的完全限定域名 (FQDN)>@<大写领域 Active Directory 域名> -mapuser control-user@<大写领域 Active Directory 域名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out <文件路径>\<文件名>.keytab

    运行该命令时,实用程序将提示您输入 control-user 密码。

    带角色控制的节点的 SPN 将被添加到创建的 keytab 文件中。将显示生成的盐:带有盐“<哈希值>”的哈希密码。

  4. 对于集群的每个节点,将 SPN 条目添加到 keytab 文件中。为此,请运行以下命令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<节点的完全限定域名 (FQDN)>@<大写领域 Active Directory 域名> -mapuser control-user@<大写领域 Active Directory 域名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <先前创建的文件的路径和名称>.keytab -out <路径和新名称>.keytab -setupn -setpass -rawsalt "<在第 3 步创建 keytab 文件时获得的盐的哈希值>"

    运行该命令时,实用程序将提示您输入 control-user 密码。

将创建 keytab 文件。此文件将包含集群节点的所有已添加的 SPN。

示例:

例如,您需要创建包含以下 3 个节点的 SPN 的 keytab 文件:control-01.test.localsecondary-01.test.localsecondary-02.test.local

要在 C:\keytabs\ 文件夹中创建包含控制节点 SPN 的 filename1.keytab 文件,必须运行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out C:\keytabs\filename1.keytab

假定您获得了盐 "TEST.LOCALHTTPcontrol-01.test.local"

要再添加一个 SPN,必须运行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

要添加第三个 SPN,您必须运行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

这将导致创建一个名为 filename3.keytab 的文件,其中包含所有三个添加的 SPN。

要针对每个节点使用单独的用户账户创建 keytab 文件:

  1. 在“Active Directory 用户和计算机”管理单元中,为每个集群节点创建一个单独的用户账户(例如,名称为 control-usersecondary1-usersecondary2-user 等的用户账户)。
  2. 如果要使用 AES256-SHA1 加密算法,请在 Active Directory 用户和计算机管理单元中执行以下操作:
    1. 打开创建的账户的属性。
    2. 账户选项卡中,选择此账户支持 Kerberos AES 256 位加密复选框。
  3. 使用 ktpass 实用程序为 control-user 创建 keytab 文件。为此,请在命令行运行以下命令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<控制节点的完全限定域名 (FQDN)>@<大写领域 Active Directory 域名> -mapuser control-user@<大写领域 Active Directory 域名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <文件路径>\<文件名>.keytab

    运行该命令时,实用程序将提示您输入 control-user 密码。

    带角色控制的节点的 SPN 将被添加到创建的 keytab 文件中。

  4. 对于集群的每个节点,将 SPN 条目添加到 keytab 文件中。为此,请运行以下命令:

    C:\Windows\system32\ktpass.exe -princ HTTP/<节点的完全限定域名 (FQDN)>@<大写领域 Active Directory 域名> -mapuser secondary1-user@<大写领域 Active Directory 域名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <先前创建的文件的路径和名称>.keytab -out <路径和新名称>.keytab

    运行该命令时,实用程序将提示您输入 secondary1-user 密码。

将创建 keytab 文件。此文件将包含集群节点的所有已添加的 SPN。

示例:

例如,您需要创建包含以下 3 个节点的 SPN 的 keytab 文件:control-01.test.localsecondary-01.test.localsecondary-02.test.local

要在 C:\keytabs\ 文件夹中创建包含控制节点 SPN 的 filename1.keytab 文件,必须运行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out C:\keytabs\filename1.keytab

要再添加一个 SPN,必须运行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser secondary1-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab

要添加第三个 SPN,您必须运行以下命令:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser secondary2-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab

这将导致创建一个名为 filename3.keytab 的文件,其中包含所有三个添加的 SPN。

Did you find this article helpful?
What can we do better?
Thank you for your feedback! You're helping us improve.
Thank you for your feedback! You're helping us improve.