Kerberos 和多个 SPN
Kerberos and multiple SPNs
我设法为 1 台服务器设置了 Kerberos 身份验证并且已启动 运行 正常。现在我有一个项目,我必须按如下方式将另一台服务器添加到 Kerberos 配置中:
1) 广告服务器
2) 服务器 1,其中服务为 运行
3) server2 其中相同的服务将是 运行
所以我执行了 setspn 命令将两者都分配给单个 "spn" 用户:
setspn -s serviceX/server1.domain.com@DOMAIN.COM spn
setspn -s serviceX/server2.domain.com@DOMAIN.COM spn
然后我执行命令ktpass:
ktpass -princ serviceX/server1.domain.com@DOMAIN.COM -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out C:\keytab +rndPass
接下来我应该怎么做才能让它发挥作用?
如何为server2执行ktpass?
当我对 server2 尝试相同的命令时,我收到警告:
警告:无法设置 UPN serviceX/server2。domain.com ptype 1 vno 10 etype 0x12
kinits 到 "serviceX/server2.domain.com" 将失败。
你们如何为同一服务但在不同服务器上设置 kerberos 身份验证?
您是否创建了 2 个 spn 用户和 2 个密钥表?
我想我需要在 1 个密钥表中包含所有内容,因为服务需要它。
有帮助吗?
您可以 运行 serviceX 在两个不同的服务器上 使用相同的密钥表 通过使用绑定到用户的 SPN目录中的帐户而不是每个服务器。为此,您将 SPN 绑定到虚拟服务器名称(又名 "VIP")而不是真实服务器名称。在我目前的组织中,我们一直这样做。因此,由于 SPN 将在 DNS 中使用虚拟服务器名称,您只需配置负载平衡器,将对该虚拟名称的任何查询发送到它后面的真实服务器 "answering" 到该名称。所以在这种情况下,不必担心服务器 1 和服务器 2 都有唯一的密钥表,您只需为我将称为 server-vip 的内容创建一个密钥表,然后复制相同的密钥表两台服务器的密钥表。如果您没有负载均衡器,那么您可以仅使用 DNS 循环来完成此操作。所以下面的例子将是你新的 keytab 创建语法,注意只有一件事发生了变化。这很好的另一个原因是因为它可以适应服务器的变化。当您最终停用服务器 1 和服务器 2 时,您可以轻松地将密钥表复制到服务器 3 和服务器 4。
ktpass -princ serviceX/server-vip.domain.com@DOMAIN.COM -ptype
KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out
C:\keytab +rndPass
朋友...
当您尝试绑定 SPN:
serviceX/server-vip.domain.com@DOMAIN.COM
与 UPN
spn
错误:kinits 到 "serviceX/server2.domain.com" 将失败。 表明存在一些问题,但不确切是哪里或如何。我今天遇到了同样的问题,但是另一个日志揭示了错误的主要原因:
设置失败属性'userPrincipalName'
当我们尝试使用 ktpass 生成密钥表时,会显示此消息,我们没有想到的是,UPN 对象有这么多属性,其中之一是 UserPrincipalName.那么为什么我们不能将属性 UserPrincipalName 设置为 "spn" 值呢?因为它已经在另一个 UPN 属性中配置了!不幸的是,您需要验证您的 UPN 的所有属性,搜索 "spn" 值。
您可以使用 adsiedit 进行手动搜索:
adsiedit.msc
或者与搜索 userPrincipalName 属性的用户进行循环:
$users = get-aduser -filter *
foreach ($var in $users) { $var | select Name, UserprincipalName | fl }
我发现我的 "UserPrincipalName" 属性 在另一个 UPN 中配置错误,因此我解决了这个问题。
► 每个 UserPrincipalName 需要配置与您的 UPN 相同的名称。
UPN=s_user_http,然后 UserPrincipalName=s_user_http@YOUR_DOMAIN,验证一下!
回答您的问题:
一个 UPN 可以是多个 SPN,但它很危险,如果你不小心增加了 kvno,所有其他的 keytabs 都会失效。每个 SPN 使用一个 UPN。
希望对您有所帮助。
我设法为 1 台服务器设置了 Kerberos 身份验证并且已启动 运行 正常。现在我有一个项目,我必须按如下方式将另一台服务器添加到 Kerberos 配置中:
1) 广告服务器
2) 服务器 1,其中服务为 运行
3) server2 其中相同的服务将是 运行
所以我执行了 setspn 命令将两者都分配给单个 "spn" 用户:
setspn -s serviceX/server1.domain.com@DOMAIN.COM spn
setspn -s serviceX/server2.domain.com@DOMAIN.COM spn
然后我执行命令ktpass:
ktpass -princ serviceX/server1.domain.com@DOMAIN.COM -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out C:\keytab +rndPass
接下来我应该怎么做才能让它发挥作用? 如何为server2执行ktpass? 当我对 server2 尝试相同的命令时,我收到警告:
警告:无法设置 UPN serviceX/server2。domain.com ptype 1 vno 10 etype 0x12 kinits 到 "serviceX/server2.domain.com" 将失败。
你们如何为同一服务但在不同服务器上设置 kerberos 身份验证? 您是否创建了 2 个 spn 用户和 2 个密钥表? 我想我需要在 1 个密钥表中包含所有内容,因为服务需要它。 有帮助吗?
您可以 运行 serviceX 在两个不同的服务器上 使用相同的密钥表 通过使用绑定到用户的 SPN目录中的帐户而不是每个服务器。为此,您将 SPN 绑定到虚拟服务器名称(又名 "VIP")而不是真实服务器名称。在我目前的组织中,我们一直这样做。因此,由于 SPN 将在 DNS 中使用虚拟服务器名称,您只需配置负载平衡器,将对该虚拟名称的任何查询发送到它后面的真实服务器 "answering" 到该名称。所以在这种情况下,不必担心服务器 1 和服务器 2 都有唯一的密钥表,您只需为我将称为 server-vip 的内容创建一个密钥表,然后复制相同的密钥表两台服务器的密钥表。如果您没有负载均衡器,那么您可以仅使用 DNS 循环来完成此操作。所以下面的例子将是你新的 keytab 创建语法,注意只有一件事发生了变化。这很好的另一个原因是因为它可以适应服务器的变化。当您最终停用服务器 1 和服务器 2 时,您可以轻松地将密钥表复制到服务器 3 和服务器 4。
ktpass -princ serviceX/server-vip.domain.com@DOMAIN.COM -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out C:\keytab +rndPass
朋友...
当您尝试绑定 SPN:
serviceX/server-vip.domain.com@DOMAIN.COM
与 UPN
spn
错误:kinits 到 "serviceX/server2.domain.com" 将失败。 表明存在一些问题,但不确切是哪里或如何。我今天遇到了同样的问题,但是另一个日志揭示了错误的主要原因:
设置失败属性'userPrincipalName'
当我们尝试使用 ktpass 生成密钥表时,会显示此消息,我们没有想到的是,UPN 对象有这么多属性,其中之一是 UserPrincipalName.那么为什么我们不能将属性 UserPrincipalName 设置为 "spn" 值呢?因为它已经在另一个 UPN 属性中配置了!不幸的是,您需要验证您的 UPN 的所有属性,搜索 "spn" 值。
您可以使用 adsiedit 进行手动搜索:
adsiedit.msc
或者与搜索 userPrincipalName 属性的用户进行循环:
$users = get-aduser -filter *
foreach ($var in $users) { $var | select Name, UserprincipalName | fl }
我发现我的 "UserPrincipalName" 属性 在另一个 UPN 中配置错误,因此我解决了这个问题。
► 每个 UserPrincipalName 需要配置与您的 UPN 相同的名称。
UPN=s_user_http,然后 UserPrincipalName=s_user_http@YOUR_DOMAIN,验证一下!
回答您的问题: 一个 UPN 可以是多个 SPN,但它很危险,如果你不小心增加了 kvno,所有其他的 keytabs 都会失效。每个 SPN 使用一个 UPN。
希望对您有所帮助。