如果我也为 A 记录创建了 SPN,那么 Kerberos 是否可以与 CNAME 一起使用?

如果我也为 A 记录创建了 SPN,那么 Kerberos 是否可以与 CNAME 一起使用?

我们目前正在设置 SQL 2012 环境,它将用于存储在 SharePoint 集成模式下 SSRS 访问的数据。我们将使用 Kerberos 进行身份验证。

我们希望能够将 cname 用于 sql 服务器。我们使用默认实例,并且每个服务器只需要一个实例。

我担心的是 kerberos、IE/.NET 和 CNAME 的已知问题。我想知道,只要我确保为 SQL 服务器的 CNAME 和 A 记录正确设置了 SPN,此配置是否有效?

答案1

一开始我很想说不,你不能这样做,但转念一想,还是去做吧。

“您必须为所有新的 DNS 别名 (CNAME) 记录注册 Kerberos 服务主体名称 (SPN)、主机名和完全限定域名 (FQDN)。如果不这样做,DNS 别名 (CNAME) 记录的 Kerberos 票证请求可能会失败并返回错误代码 KDC_ERR_S_SPRINCIPAL_UNKNOWN。”

http://blogs.msdn.com/b/karang/archive/2009/12/12/why-do-we-need-spn-for-file-server-nas-ras-file-share-system-dna-alias-cname.aspx

为了跟进,我可以确认 kerberos 连接已正确建立。感谢提供链接,因为它确认只要为 SQL 群集名称创建 SPN,就只需要 CNAME。

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/fa0a38ef-106a-4521-b4f3-a62c60f89a99

从技术上讲,由于 SQL Server SPN 包含实例名称(如果您在同一台计算机上使用第二个命名的实例),您可以将群集的 DNS 主机注册为 CNAME 别名,并避免附录 A Kerberos 配置已知问题 (SharePoint Server 2010) 中描述的 CNAME 问题。但是,如果您选择使用 CNAME,则必须使用 DNS (A) 记录主机名注册 CNAME 别名的 SPN。

http://msdn.microsoft.com/en-us/library/gg502606.aspx

答案2

您可以为 CNAME 注册 SPN。我们在我工作的地方这样做,而且很有效。

答案3

答案中的大多数链接不再有效,并且没有一个答案是完全正确的。

以下是一个正确答案:使用 CNAME DNS 记录时出现 Kerberos 错误 APP_MODIFIED

这是另一个:https://argonsys.com/microsoft-cloud/library/using-computer-name-aliases-in-place-of-dns-cname-records/

总结:你需要为后面的机器注册 SPN你的 A 记录,而不是您的 CNAME 记录。对于 Windows 系统,最好使用此命令而不是 CNAME-DNS 条目进行别名设置:

netdom computername <HOST> /Add:<ALIAS>

这会使 DNS 和 SPN 自动保持最新状态。

CNAMES 对某些人“有效”的一个可能原因是,他们要么没有注意到自动回退到 NTLM,要么启用了 DisableStrictNameChecking。或者他们已将 SPN 注册到 CNAME 和 A 记录,这当然也可以正常工作。

为了证明我的答案,下面是我在我的环境中进行的测试。出于隐私原因,屏幕截图已模糊处理。

SPN CNAME 测试

我们可以观察到

  1. 浏览器正在打开 testgrc.domain.local
  2. DNS 包含指向 grc.domain.local 的 CNAME 条目
  3. DNS 查找正在请求 testgrc.domain.local,DNS 服务器响应 CNAME 记录“grc.domain.local”的目标以及此主机的 IP
  4. 浏览器向域控制器发起 Kerberos 请求对于 grc.domain.local (不是 grctest.domain.local)

我使用 MS SQL Management Studio 运行了相同的测试,可以观察到相同的结果。当 SPN 注册到 CNAME 指向的主机(A 记录)而不是 CNAME 本身时,Kerberos 可以正常工作。

相关内容