Я пытаюсь настроить вход в Kerberos на основе PKINIT в Active Directory. Вход в систему должен выполняться с использованием sssd в Linux. Однако сервер Kerberos не принимает сертификат клиента. Мы получаем сообщение об ошибке с идентификатором 21: сертификат для пользователя REALM / Domainuser недействителен на сервере, и sssd сообщает: Несоответствие имени клиента.
Сертификаты были созданы с помощью следующей процедуры на другом компьютере Linux:
openssl req -new -key keyfile.pem -out reqfile.pem -subj
"/CN=Domainuser/O=AAA/C=DE/OU=BBB"
env REALM=REALM.local CLIENT=Domainuser openssl x509 \
-CAkey ../ca_privkey.pem -CA ../ca_cert.pem -req -in reqfile.pem \
-extensions client_cert -extfile extensions.client \
-days 365 -out certfile.pem
Мы установили AD CA на Windows Server, на котором размещена сама AD. Мы экспортировали сертификат этого CA на компьютер с Linux и сохранили его закрытый ключ и сертификат в файлах ca_privkey.pem
и ca_cert.pem
, чтобы использовать его с openssl
.
client_cert
, который мы использовали во время подписисоздание было создано с использованием шаблона, предложенного sssd. Единственное, что мы добавили, это опция crlDistributionPoints
для включения CRL CA:
[client_cert]
basicConstraints=CA:FALSE
keyUsage=digitalSignature,keyEncipherment,keyAgreement
extendedKeyUsage=1.3.6.1.5.2.3.4
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
issuerAltName=issuer:copy
subjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:princ_name
crlDistributionPoints=URI:http://link-to-CRL-of-CA
[princ_name]
realm=EXP:0,GeneralString:${ENV::REALM}
principal_name=EXP:1,SEQUENCE:principal_seq
[principal_seq]
name_type=EXP:0,INTEGER:1
name_string=EXP:1,SEQUENCE:principals
[principals]
princ1=GeneralString:${ENV::CLIENT}
. Область, используемая для аутентификации, - это REALM.local (равный домену AD). Переменные среды REALM
и CLIENT
устанавливаются на REALM.LOCAL
и pkuser
при создании сертификата, а пользователь AD pkuser
также существует в AD (возможен вход на основе пароля).
IПонятия не имею, почему аутентификация не прошла успешно. У вас есть идеи, что может быть не так в конфигурации, или подскажите, что Windows печатает более подробное сообщение об ошибке? Обратите внимание, что certutil -verify -urlfetch certfile.pem
может проверять всю цепочку сертификатов и не печатает никаких ошибок при выполнении команды Administrator
на сервере AD.
Я предполагаю, что в Windows есть некоторые ошибки конфигурацииСервер. Это первый раз, когда я настраивал Windows Server;)