gss_acquire_cred возвращает ошибку «Запись таблицы ключей не найдена»

StackOverflow https://stackoverflow.com/questions/127324

  •  02-07-2019
  •  | 
  •  

Вопрос

Я стараюсь следовать рекомендациям, изложенным в эта статья Microsoft Проверка подлинности против Apache с помощью Kerberos и AD.Я успешно протестировал связь между сервером Apache и сервером AD с помощью kinit.Однако когда я пытаюсь получить доступ к странице с ограниченным доступом на сервере с помощью IE, я получаю внутреннюю ошибку сервера, и в журнале ошибок Apache появляется следующее сообщение.

[Wed Sep 24 14:18:15 2008] [debug] src/mod_auth_kerb.c(1483): [client 172.31.37.38] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Wed Sep 24 14:18:15 2008] [debug] src/mod_auth_kerb.c(1174): [client 172.31.37.38] Acquiring creds for HTTP/srvnfssol1.dev.local@DEV.LOCAL
[Wed Sep 24 14:18:15 2008] [error] [client 172.31.37.38] gss_acquire_cred() failed: Miscellaneous failure (see text) (Key table entry not found)

Я запустил ферму в процессе Apache и подтвердил, что файл keytab действительно загружается нормально.Мне интересно, что-то не так с форматом файла keytab...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

Хотя я не уверен, чего мне не хватает.Или что еще проверить.

Какие-либо предложения?

Спасибо

Питер

Это было полезно?

Решение

Хорошо.Вкладки ключей должны содержать имя участника службы, в данном случае «HTTP/srvnfssol1.dev.local@DEV.LOCAL», и ключ шифрования.Я вижу, что в документах MS говорится просто отразить это в файле, но я не думаю, что это правильно.

Для создания таблицы ключей вам понадобится утилита ktpass.Документы MS здесь.

В частности, вам нужно будет указать KRB5_NT_SRV_HST, а большинство остальных параметров могут быть заданы по умолчанию.

Пример на моей машине:

C:\>ktpass /out test.keytab /princ HTTP/srvnfssol1.dev.local@DEV.LOCAL 
           /ptype KRB5_NT_SRV_HST /pass *
Type the password for HTTP/srvnfssol1.dev.local:
Key created.

Output keytab to test.keytab:

Keytab version: 0x502
keysize 62 HTTP/srvnfssol1.dev.local@DEV.LOCAL 
ptype 3 (KRB5_NT_SRV_HST) vno 1 etype 0x1 (DES-CBC-CRC) 
keylength 8 (0xa7f1fb38041c199e)

Если сервером активных каталогов является KDC, вам нужно будет использовать /map <name> аргумент, где <name> — это учетная запись компьютера в активном каталоге, представляющая сервер.

Немного подробностей о том, как все это работает.Когда вы заходите на сайт, он должен ответить WWW-аутентификацией:Согласуйте заголовок, и ваш браузер отправит запрос на KDC (сервер активных каталогов), чтобы получить билет Kerberos для службы.Сервер AD найдет ключ шифрования билета, используя имя субъекта службы, и отправит зашифрованный билет службы обратно в браузер.Как только браузер получит билет службы, он повторно отправит HTTP-запрос с заголовком аутентификации, содержащим билет.Сервер Apache найдет свой ключ на вкладке ключей, расшифрует билет и предоставит доступ.

Ошибка «Запись таблицы ключей не найдена» возникает из-за того, что Apache не находит себя в вкладке ключей.Это также может произойти, если разрешение имени/области настроены неправильно.

Вы сможете увидеть все запросы Kerberos AP-REQ/AP-REP/TGS-REQ/TGS-REP с помощью Wireshark на клиенте, порте TCP или UDP 88.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top