Kaspersky Web Traffic Security 帮助

创建 keytab 文件

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

您可以使用相同的用户账户在集群的所有节点上进行身份验证。为此,您必须为这些节点中的每一个创建一个包含

。创建 keytab 文件时,必须使用属性生成salt(哈希函数修饰符)。

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

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

在您创建 keytab 文件之前

在创建 keytab 文件之前,对于每个 SPN,请确保它未在 Active Directory 中注册。您可以通过运行以下命令来执行此操作:setspn -Q <SPN>,其中 <SPN> 具有以下结构:HTTP/<集群节点的完全限定域名 (FQDN)>@<Active Directory 域的领域名称(大写)>

该命令应返回“未找到这样的 SPN”,这意味着所讨论的 SPN 未注册。如果 SPN 已注册,则在创建 keytab 文件之前,您需要从账户中取消分配 SPN 或在分配了此 SPN 的 Active Directory 中删除账户本身。

检查一个控制节点和辅助节点的 SPN 的示例:

setspn -Q HTTP/control-01.test.local@TEST.LOCAL

setspn -Q HTTP/secondary-01.test.local@TEST.LOCAL

setspn -Q HTTP/secondary-02.test.local@TEST.LOCAL

创建 keytab 文件

使用域管理员账户,在域控制器服务器或属于该域的 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 文件时获得的 salt 的哈希值>"

    运行该命令时,实用程序将提示您输入 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。

在您创建 keytab 文件之后

在创建 keytab 文件之后,对于每个 SPN,确保它已注册并分配给相关账户。您可以通过运行以下命令来执行此操作:setspn -Q <SPN>,其中 <SPN> 具有以下结构:HTTP/<集群节点的完全限定域名 (FQDN)>@<Active Directory 域的领域名称(大写)>

该命令必须返回“找到现有的 SPN”以及分配了 SPN 的账户。

此外,创建 keytab 文件后,您可以检查分配给相关账户的 SPN 列表。为此,您可以运行以下命令:setspn -L <账户>,其中<账户>具有以下结构:<用户名>@<Active Directory 域的领域名称(大写)>

如果使用一个账户创建了 keytab 文件,则该命令应返回为其创建 keytab 文件的所有 SPN 的列表。如果为每个节点创建了单独账户的 keytab 文件,则该命令应返回一个分配给特定账户的 SPN。

针对一个账户的示例命令:

setspn -L control-user@TEST.LOCAL

每个节点单独账户的示例命令:

setspn -L control-user@TEST.LOCAL

setspn -L secondary1-user@TEST.LOCAL

setspn -L secondary2-user@TEST.LOCAL