2008-09-24 5 views
2

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

[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/[email protected] 
[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) 

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

HTTP/[email protected] 

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

Любые предложения?

Благодаря

Питер

+0

мая мы видим файл Keytab ? Я знаю, что это в основном двоичный формат, но я хотел бы посмотреть, действительно ли этот ключ присутствует. – davenpcj 2008-09-24 14:10:28

ответ

4

Ok. Предполагается, что в Keytabs должно быть имя участника службы, в данном случае «HTTP/[email protected]» и ключ шифрования. Я вижу, где MS-документы говорят просто для того, чтобы повторить это в файле, но я не думаю, что это правильно.

Вам понадобится утилита ktpass для создания keytab. Документы MS: here.

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

Образец этого на моей машине:

C:\>ktpass /out test.keytab /princ HTTP/[email protected] 
      /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/[email protected] 
ptype 3 (KRB5_NT_SRV_HST) vno 1 etype 0x1 (DES-CBC-CRC) 
keylength 8 (0xa7f1fb38041c199e) 

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

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

Ошибка «запись в таблице не найдена», так как apache не находит себя в keytab. Также может произойти, если разрешение/области имен не настроены правильно.

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

 Смежные вопросы

  • Нет связанных вопросов^_^