Создание сертификатов для входа в Kerberos на основе PKINIT в Active Directory - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь настроить вход в 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;)

...