创建 keytab 文件

2024年4月26日

ID 206091

您可以使用同一个账户在所有集群节点上进行身份验证。为此,请为这些节点中的每一个创建一个包含服务主体名称 (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\ 文件夹中创建一个名为 filename1.keytab 且包含控制节点 SPN 的文件,请运行以下命令:

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\ 文件夹中创建一个名为 filename1.keytab 且包含控制节点 SPN 的文件,请运行以下命令:

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.