Я пытаюсь получить тестовую пару клиент / сервер Kerberos, работающую с Active Directory.Я создал трех пользователей в свободном домене в нашей корпоративной сети: «RichardC», «Server1» и «Server2».Пользователям моего сервера назначены разные имена участников службы, одно с KRB5_NT_PRINCIPAL, другое с KRB5_NT_SRV_HOST.
ktpass -out server2.keytab
-princ server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL
-mapuser ServerUser2@BENCHMARKING.RDDEV.LOCAL
-pass ThePassword
-crypto All
-pType KRB5_NT_SRV_HOST
-kvno 2
В этот раз я не использовал опцию + DesOnly, надеясь, что в современных системах я не используюнужен DES.В этом вопросе я заменил реальное доменное имя mydomain, чтобы избежать проблем с управлением.
Это дает мне таблицу ключей.Я могу добавить его в список:
KVNO Principal
---- --------------------------------------------------------------------------
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (DES cbc mode with CRC-32)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (DES cbc mode with RSA-MD5)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (ArcFour with HMAC/md5)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (AES-256 CTS mode with 96-bit SHA-1 HMAC)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (AES-128 CTS mode with 96-bit SHA-1 HMAC)
Я даже могу использовать kinit -k для входа в систему с помощью ключа из таблицы ключей - так что, похоже, он работает.
У меня есть своя собственная программа тестированияи не удалось выполнить тестовую программу с http://download.oracle.com/docs/cd/E19683-01/816-1331/sampleprogs-1/index.html. В этой программе на сервере я изменил GSS_C_NT_HOSTBASED_SERVICE на GSS_C_NT_USER_NAME с обоими клавишами, чтобы она распознала имя.Я использую демонстрационный сервер Oracle под именем
./gss-server -mech 1.2.840.113554.1.2.2 server2/serbia.mydomain.com
, а клиент
./gss-client -mech 1.2.840.113554.1.2.2 serbia.mydomain.com server2 "Hello"
Результат:
GSS-API error accepting context: Invalid credential was supplied
GSS-API error accepting context: Service key not available
И в этом, и в моем собственном тестеВ коде ошибка возникает после того, как клиент отправил свой первый токен, когда сервер пытается его декодировать.
klist показывает ключ, предоставленный для клиента.Он использует ArcFour, который находится в keytab
Default principal: RichardC@BENCHMARKING.RDDEV.LOCAL
Valid starting Expires Service principal
07/25/11 17:36:49 07/26/11 03:35:18 krbtgt/BENCHMARKING.RDDEV.LOCAL@BENCHMARKING.RDDEV.LOCAL
renew until 08/01/11 17:36:49
07/25/11 17:36:03 07/26/11 03:35:18 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL
renew until 08/01/11 17:36:03
Машина UNIX (Сербия) может принадлежать другой сфере (той, что я назвал mydomain.com здесь), хотя она, похоже, неесть настройка Kerberos.Я использую локальный файл krb5.conf, который я указал на область BENCHMARKING.RDDEV.LOCAL, хотя, если машина пытается использовать DNS со своим именем хоста, она может получить неправильный ответ.Мой krb5.conf имеет
[libdefaults]
default_keytab_name = /users/dev/core/richardc/server1.keytab
default_realm = BENCHMARKING.RDDEV.LOCAL
dns_lookup_kdc = false
default_tkt_types = DES-CBC-MD5
[realms]
BENCHMARKING.RDDEV.LOCAL = {
kdc = gbha-dcbench01p.benchmarking.rddev.local
admin_server = gbha-dcbench01p.benchmarking.rddev.local
}
[domain_realm]
benchmarking.rddev.local = BENCHMARKING.RDDEV.LOCAL
.benchmarking.rddev.local = BENCHMARKING.RDDEV.LOCAL
mydomain.com = BENCHMARKING.RDDEV.LOCAL
.mydomain.com = BENCHMARKING.RDDEV.LOCAL
Похоже, что параметры, такие как default_tkt_types, были неэффективными.
Вопрос - как мне исправить мою ошибку?
Спасибо - Ричард