Ошибка — Cannot find key for kvno in keytab

В один момент перестала работать Kerberos/SSO аутентификация на сайте размещённом на веб-сервере Apache, в логах значатся ошибки вида:

...
[Mon Sep 04 11:04:58.724720 2023] [auth_kerb:error] [pid 19547] [client 10.51.90.61:58932] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Cannot find key for HTTP/svc.web@JAKONDA.LOCAL kvno 4 in keytab)
...

 

Проверяем текущее значение номера Key Version Number (KVNO) в keytab-файле:

klist -k /etc/svc.web.keytab

Keytab name: FILE:/etc/svc.web.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 HTTP/zabbix.jakonda.ru@JAKONDA.LOCAL

Видим что номер Key Version Number (KVNO) учётной записи равен 2, в то время у учетной записи AD атрибут msDS-KeyVersionNumber равен 4.

Такое может получится при внесении изменений в учетную запись, к примеру при смене пароля и т.д., в этом случае все keytab-файлы, которые генерировались ранее для этой учётной записи (где номер KVNO меньше текущего) становятся недействительными.

 

В Windows можно посмотреть текущее значение KVNO для учетной записи в свойствах учётной записи — атрибут msDS-KeyVersionNumber

Читать далее

Настройка Kerberos Single Sign-On (SSO) с GSSAPI на Debian 11 Bullseye.

Рассмотрим как настроить Kerberos Single Sign-On (SSO) с GSSAPI в Apache веб-сервере на Debian 11 Bullseye.

Исходные данные:

  • Windows домен — jakonda.local
  • Доменная служебная учетная запись — svc.web
  • Linux машина — Debian 11

 

Сперва необходимо создать сервисную учетную запись (в моем случае это будет svc.web) и сгенерировать для нее KEYTAB-файл на домен контроллере Windows.

Делается все это командой ниже, не забываем подставить свои данные вместо моих.

ktpass -princ HTTP/web.jakonda.ru@JAKONDA.LOCAL -mapuser svc.web@JAKONDA.LOCAL -pass 3T2XgYCz2IFcBUo0altu -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\Keytabs\svc.web.keytab
ИНФОМАЦИЯ. где web.jakonda.ru — это имя веб-сервера на котором должна работать Kerberos SSO аутентификация, а JAKONDA.LOCAL это имя домена. Важно соблюдать регистр написания имени домена.

Передаем сгенерированный KEYTAB-файл на Debian любым удобным способом и размещаем его в каталоге /etc, либо в любом другом безопасном месте месте.

 

Назначим права и уровень доступа к файлу:

chown root:www-data /etc/svc.web.keytab
chmod 640 /etc/svc.web.keytab

 

Устанавливаем пакеты веб-сервера apache, модуль аутентификации gssapi для него и kerberos.

apt-get install apache2 apache2-utils libapache2-mod-auth-gssapi krb5-user

Читать далее