Art*_*ldt 6 active-directory kerberos spn
我正在尝试设置 SPN 并为 tomcat kerberos spnego 单点登录创建密钥表文件。
运行 tomcat7 的服务器是 ubuntu-ad1.wad.eng.hytrst.com KDC 是 kerberos.wad.eng.hytrust.com 域是 WAD.ENG.HYTRUST.COM 我使用我的广告用户名 aulfeldt@WAD.ENG .HYTRUST.COM 机器的AD账号是ubuntu-ad1@WAD.ENG.HYTRUST.COM
首先,我创建 spn 以与用户名关联(希望解释为什么我需要这样做?):
setspn HTTP/ubuntu-ad.wad.eng.hytrust.com aulfeldt@WAD.ENG.HYTRUST.COM
Run Code Online (Sandbox Code Playgroud)
然后我创建一个密钥表以复制到 Web 服务器:
ktpass /out tomcat.keytab /mapuser aulfeldt@WAD.ENG.HYTRUST.COM /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL
Run Code Online (Sandbox Code Playgroud)
然后我将其复制到 Web 服务器并用于ktutil
将其与 /etc/krb5.keytab 合并。
当我尝试用 kinit 测试它时,我无法从密钥表中成功读取它:
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit -k -t /home/hytrust/tomcat.keytab http/ubuntu-ad1.wad.eng.hytrust.com@WAD.ENG.HYTRUST.COM
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit -k -t /home/hytrust/tomcat.keytab HTTP/ubuntu-ad1.wad.eng.hytrust.com@WAD.ENG.HYTRUST.COM
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit -k -t /home/hytrust/tomcat.keytab ubuntu-ad1.wad.eng.hytrust.com@WAD.ENG.HYTRUST.COM
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit -k -t /home/hytrust/tomcat.keytab ubuntu-ad1.wad.eng.hytrust.com
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit -k -t /home/hytrust/tomcat.keytab aulfeldt@WAD.ENG.HYTRUST.COM
kinit: Key table entry not found while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit -k -t /home/hytrust/tomcat.keytab ubuntu-ad1@WAD.ENG.HYTRUST.COM
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit ubuntu-ad1@WAD.ENG.HYTRUST.COMPassword for ubuntu-ad1@WAD.ENG.HYTRUST.COM:
kinit: Preauthentication failed while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$ sudo kinit aulfeldt@WAD.ENG.HYTRUST.COM
Run Code Online (Sandbox Code Playgroud)
aulfeldt@WAD.ENG.HYTRUST.COM 的密码:hytrust@ubuntu-ad1:/usr/share/tomcat7/conf$
“在 Kerberos 数据库中未找到客户端”与“在 Kerberos 数据库中未找到客户端”有何不同?这些错误究竟意味着什么?
小智 9
(这个问题有点老了,但我的分析可能对其他人有帮助)
您似乎缺少一些理解,因此没有正确执行命令。我假设您的 KDC 实际上是一个 Active Directory KDC。这从您的描述中并不完全清楚。
首先,在活动目录 kerberos(与标准 MIT/Heimdal kerberos 不同)中,服务主体名称(SPN - 运行机器的服务)需要连接到用户主体名称(UPN,位于机器后面的用户)。因此映射。
setspn 将通过将 ldap 属性添加到用户的 cn 来将服务主体名称添加到用户
ktpass 将输出您的密钥选项卡并将UserPrincipalName 重写为 username/fully.qualified.domainname@REALM 。
通过在主体上的kinit -k -t key.tab principal
key.tab 文件和活动目录 UPN 中进行查找。如果在密钥选项卡中找不到主体,则会出现“获取初始凭据时未找到密钥表条目”之类的错误。如果在目录中找不到它,它将给出“获取初始凭据时在 Kerberos 数据库中找不到客户端”。
现在到你手头的问题。您似乎缺少 ktpass 的 /princ 参数。这是实际获取密钥选项卡文件中的主体并获得正确映射所必需的。我想知道什么是klist -k keytab
给予。
所以你的线条应该是这样的(包括将 REALM 放在正确的位置:
setspn HTTP/ubuntu-ad.wad.eng.hytrust.com aulfeldt
ktpass /princ HTTP/ubuntu-ad.wad.eng.hytrust.com@WAD.ENG.HYTRUST.COM /out tomcat.keytab /mapuser aulfeldt /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL
Run Code Online (Sandbox Code Playgroud)
额外:如果您使用带有 samba 工具的 SAMBA 4 来执行此操作,您需要手动将 userPrincipalName 更改为(在这种情况下):HTTP/ubuntu-ad.wad.eng.hytrust.com@WAD.ENG.HYTRUST。 COM 这是因为 samba 的关键选项卡生成不会更新 UPN,因此您在进行查找时会出错。
附带说明:活动目录机器名称是 COMPUTER$(标记 $)。你的好像没电了
尝试在 Windows 中使用“setspn -Q”查看 SPN 是否已正确创建:
C:\Windows\System32>setspn -Q HTTP/util01.example.com
CN=util01,OU=Servers,DC=example,DC=com
HTTP/util01.example.com
Existing SPN found!
Run Code Online (Sandbox Code Playgroud)
然后,检查 keytab 文件以查看是否匹配:
[apache@util01 ~]$ klist -e -k /etc/httpd/conf/auth_httpd.keytab
Keytab name: FILE:/etc/httpd/conf/auth_httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
3 HTTP/util01.example.com@EXAMPLE.COM (DES cbc mode with RSA-MD5)
Run Code Online (Sandbox Code Playgroud)
如果它们不匹配(除了 @EXAMPLE.COM 领域位),请通过使用 ktpass 重新导出密钥表来修复它。
如果它们匹配,您应该能够获得密钥表中指定的 SPN 的票据(不包括领域):
$ sudo kinit -k keytab.file HTTP/util01.example.com
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16065 次 |
最近记录: |