如果您已经为单点登录身份验证创建了 keytab 文件,您可以使用此文件在代理服务器上配置 Kerberos 身份验证。
您可以使用相同的用户账户在集群的所有节点上进行身份验证。为此,您必须为这些节点中的每一个创建一个包含服务主体名称 (SPN) 的 keytab 文件。创建 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 文件:
control-user
。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 文件中。将显示生成的盐:带有盐“<哈希值>”的哈希密码。
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 文件: 要在 C:\keytabs\ 文件夹中创建包含控制节点 SPN 的
假定您获得了盐 要再添加一个 SPN,必须运行以下命令:
要添加第三个 SPN,您必须运行以下命令:
这将导致创建一个名为 |
要针对每个节点使用单独的用户账户创建 keytab 文件:
control-user
、secondary1-user
、secondary2-user
等的用户账户)。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 文件中。
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 文件: 要在 C:\keytabs\ 文件夹中创建包含控制节点 SPN 的
要再添加一个 SPN,必须运行以下命令:
要添加第三个 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 |