Хорошо. Таблицы ключей должны содержать имя участника Сервиса, в данном случае «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-Authenticate: Negotiate, и ваш браузер отправит запрос на KDC (сервер активных каталогов), чтобы получить билет Kerberos для службы. Сервер AD будет искать ключ шифрования для заявки, используя имя участника службы, и отправлять зашифрованный билет службы обратно в браузер. Как только браузер получит билет службы, он снова выдаст HTTP-запрос с заголовком проверки подлинности, содержащим билет. Сервер apache проверит свой ключ в таблице ключей, расшифрует билет и предоставит доступ.
Ошибка «Запись таблицы ключей не найдена» происходит из-за того, что apache не находит себя в таблице ключей. Может также произойти, если разрешение имени / области не настроены правильно.
Вы должны иметь возможность видеть все запросы Kerberos AP-REQ / AP-REP / TGS-REQ / TGS-REP, используя wireshark на клиенте, порт tcp или udp 88.