Я пытаюсь настроить SPN и создать файл keytab для системы единого входа 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
Затем я создаю keytab для копирования на веб-сервер:
ktpass /out tomcat.keytab /mapuser aulfeldt@WAD.ENG.HYTRUST.COM /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL
затем я копирую его на веб-сервер и использую 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
Пароль для aulfeldt@WAD.ENG.HYTRUST.COM: hytrust @ ubuntu-ad1: / usr / share / tomcat7 / conf $
чем «Клиент не найден в базе данных Kerberos» отличается от «Клиент не найден в базе данных Kerberos»? что на самом деле означают эти ошибки?
(этот вопрос немного устарел, но мой анализ может помочь другим)
Кажется, вам не хватает понимания и, следовательно, вы неправильно выполняете команды. Я предполагаю, что ваш KDC на самом деле является KDC Active Directory. Это не совсем понятно из вашего описания.
Во-первых, в Kerberos Active Directory (в отличие от стандартных керберов MIT / Heimdal) имя участника-службы (SPN - служба, запускающая машину) должно быть связано с основным именем пользователя (UPN, пользователь, расположенный за машиной). Отсюда отображение.
setspn добавит имя участника службы пользователю, добавив атрибут ldap к cn пользователя.
ktpass выведет вашу ключевую вкладку и перепишите UserPrincipalName на username/fully.qualified.domainname@REALM.
Делая kinit -k -t key.tab principal
поиск будет происходить в файле key.tab и имя участника-пользователя активного каталога на главном сервере. Если он не может найти принципала на вкладке ключей, он выдаст ошибку типа «Запись в таблице ключей не найдена при получении начальных учетных данных». Если его невозможно найти в каталоге, он выдаст сообщение «Клиент не найден в базе данных Kerberos при получении начальных учетных данных».
Теперь к вашей проблеме. Похоже, вам не хватает параметра / princ для ktpass. Это необходимо для того, чтобы фактически получить принципала в файле ключевой вкладки и правильно сопоставить. Интересно, что за 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
Дополнительно: если вы используете SAMBA 4 с инструментом samba, для этого вам нужно будет вручную изменить userPrincipalName на (в данном случае): HTTP/ubuntu-ad.wad.eng.hytrust.com@WAD.ENG.HYTRUST. COM это связано с тем, что генерация ключевой вкладки samba не обновляет UPN и, следовательно, вы получите сообщение об ошибке при поиске.
Кстати, имя машины активного каталога - COMPUTER $ (отметьте $). Кажется, у тебя нет.
Попробуйте использовать "setspn -Q" в Windows, чтобы проверить, правильно ли создано 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!
Затем проверьте файл 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)
Если они не совпадают (за исключением бита области @ EXAMPLE.COM), исправьте это, чтобы они совпали, повторно экспортируя keytab с помощью ktpass.
Если они совпадают, вы сможете получить билет для того SPN, который указан во вкладке keytab (не включая область):
$ sudo kinit -k keytab.file HTTP/util01.example.com