Создание keytab-файла

05 августа 2026

ID 206091

Вы можете использовать одну учетную запись для аутентификации на всех узлах кластера. Для этого требуется создать keytab-файл, содержащий имена субъекта-службы (далее также "SPN") для каждого из этих узлов. При создании keytab-файла потребуется использовать атрибут для генерации соли (salt, модификатор входа хеш-функции).

Сгенерированную соль необходимо сохранить любым удобным способом для дальнейшего добавления новых SPN в keytab-файл.

Вы также можете создать отдельную учетную запись Active Directory для каждого узла кластера, для которого вы хотите настроить Kerberos-аутентификацию.

Действия перед созданием keytab-файла

Перед созданием keytab-файла следует для каждого SPN убедиться, что он не зарегистрирован в Active Directory. Сделать это можно с помощью команды setspn -Q <SPN>, где <SPN> имеет следующий вид: HTTP/<полное доменное имя (FQDN) узла кластера>.

Команда должна вернуть ответ "No such SPN found", что означает, что этот SPN не зарегистрирован. Если SPN уже зарегистрирован, перед созданием keytab-файла нужно удалить привязку SPN к учетной записи или удалить саму учетную запись в Active Directory, к которой был привязан этот SPN.

Создание keytab-файла

Keytab-файл создается на сервере контроллера домена или на компьютере под управлением Windows Server, входящем в домен, под учетной записью с правами доменного администратора.

Чтобы создать keytab-файл, используя одну учетную запись:

  1. В оснастке Active Directory Users and Computers создайте учетную запись пользователя (например, с именем control-user).
  2. Чтобы использовать алгоритм шифрования AES256-SHA1, в оснастке Active Directory Users and Computers выполните следующие действия:
    1. Откройте свойства созданной учетной записи.
    2. На закладке Account установите флажок This account supports Kerberos AES 256 bit encryption.
  3. Создайте keytab-файл для пользователя control-user с помощью утилиты ktpass. Для этого в командной строке выполните следующую команду:

    C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) Управляющего узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser control-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out <путь к файлу>\<имя файла>.keytab

    Утилита запросит пароль пользователя control-user в процессе выполнения команды.

    В созданный keytab-файл будет добавлено SPN Управляющего узла. На экране отобразится сгенерированная соль: Hashing password with salt "<хеш-значение>".

  4. Для каждого узла кластера добавьте в keytab-файл запись SPN. Для этого выполните следующую команду:

    C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser control-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <путь и имя ранее созданного файла>.keytab -out <путь и новое имя>.keytab -setupn -setpass -rawsalt "<хеш-значение соли, полученное при создании keytab-файла на шаге 3>"

    Утилита запросит пароль пользователя control-user в процессе выполнения команды.

Keytab-файл будет создан. Этот файл будет содержать все добавленные SPN узлов кластера.

Чтобы создать keytab-файл, используя отдельную учетную запись для каждого узла:

  1. В оснастке Active Directory Users and Computers создайте отдельную учетную запись пользователя для каждого узла кластера (например, учетные записи с именами control-user, secondary1-user, secondary2-user и т.д.).
  2. Чтобы использовать алгоритм шифрования AES256-SHA1, в оснастке Active Directory Users and Computers выполните следующие действия:
    1. Откройте свойства созданной учетной записи.
    2. На закладке Account установите флажок This account supports Kerberos AES 256 bit encryption.
  3. Создайте keytab-файл для пользователя control-user с помощью утилиты ktpass. Для этого в командной строке выполните следующую команду:

    C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) Управляющего узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser control-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <путь к файлу>\<имя файла>.keytab

    Утилита запросит пароль пользователя control-user в процессе выполнения команды.

    В созданный keytab-файл будет добавлено SPN Управляющего узла.

  4. Для каждого узла кластера добавьте в keytab-файл запись SPN. Для этого выполните следующую команду:

    C:\Windows\system32\ktpass.exe -princ HTTP/<полное доменное имя (FQDN) узла>@<realm имя домена Active Directory в верхнем регистре> -mapuser secondary1-user@<realm имя домена Active Directory в верхнем регистре> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <путь и имя ранее созданного файла>.keytab -out <путь и новое имя>.keytab

    Утилита запросит пароль пользователя secondary1-user в процессе выполнения команды.

Keytab-файл будет создан. Этот файл будет содержать все добавленные SPN узлов кластера.

Действия после создания keytab-файла

После создания keytab-файла следует для каждого SPN убедиться, что он зарегистрирован и привязан к соответствующей учетной записи. Сделать это можно с помощью команды setspn -Q <SPN>, где <SPN> имеет следующий вид: HTTP/<полное доменное имя (FQDN) узла кластера>.

Команда должна вернуть ответ "Existing SPN found" и учетную запись, к которой привязан SPN.

Дополнительно после создания keytab-файла можно проверить список SPN, который привязан к соответствующей учетной записи. Сделать это можно с помощью команды setspn -L <имя пользователя>.

Если keytab-файл создан с одной учетной записью, команда должна вернуть список всех SPN, для которых создавался keytab-файл. Если keytab-файл создан с отдельными учетными записями для каждого узла, то команда должна вернуть один SPN, который привязан к конкретной учетной записи.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!