Пользователю предлагают ввести пароль от доменного пользователя.
Пользователю предлагается ввести PIN-код от электронного ключа JaCarta, но, вместо входа выводится ошибка “системная ошибка”, а в журнале работы системы сказано “Client name mismatch”.
Не настроен Kerberos и недоработан профиль KDCs_PKINIT_Certs на стороне сервера FreeIPA.
Следует убедится в том, что модуль PKINIT установлен в системе и, в случае если модуль не установлен – установить. Воспользуйтесь следующей командой:
apt-get install krb5-pkinit
Далее необходимо получить тикет пользователя admin, чтобы получить доступ к командам FreeIPA. Воспользуйтесь следующей командой:
kinit admin
Запустите модуль PKINIT. Воспользуйтесь следующей командой:
Ipa-pkinit-manage enable
Откройте конфигурационный файл kdc.conf. Расположение для Astra Orel:
/etc/krb5kdc/kdc.conf
Расположение данного конфигурационного файла может отличаться на разных системах!
Найдите в файле блок [realms] и добавьте в него следующие строки:
pkinit_eku_checking = none
pkinit_allow_upn = true
Откройте конфигурационный файл krb5.conf. Расположение для Astra Orel:
/etc/krb5.conf
Расположение данного конфигурационного файла может отличаться на разных системах!
Найдите в файле блок [libdefaults] и добавьте в него следующие строки:
pkinit_eku_checking = none
pkinit_allow_upn = true
После изменения конфигурационных файлов необходимо сообщить об этом службам krb5kdc и kadmin. Используйте следующие команды:
systemctl restart krb5kdc.service
systemctl restart kadmin.service
Далее необходимо создать новый профиль выпуска сертификатов FreeIPA. Для этого перейдем в директорию расположения этих сертификатов. Расположение для Astra Orel:
/usr/share/ipa/profiles/
В данной директории необходимо получить копию профиля KDCs_PKINIT_Certs и сохранить ее в отдельный файл SecurLogon.cfg. Воспользуйтесь следующей командой:
Ipa certprofile-show --out SecurLogon.cfg KDCs_PKINIT_Certs
Откройте полученный ранее файл SecurLogon.cfg. Необходимо дополнить следующие параметры:
Параметр ID профиля:
profileId=
profileId=SecurLogon
Параметр, ответственный за предоставление выпущенным сертификатам разрешений на те или иные действия. В частности, нам необходимо: Аутентификация пользователя, проверка через модуль PKINIT, Аутентификация сервера:
policyset.serverCertSet.7.default.params.exKeyUsageOIDs=
policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.1,1.3.6.1.5.2.3.5,1.3.6.1.5.5.7.3.2
Разрешим подпись сертификата необходимыми алгоритмами:
policyset.serverCertSet.8.constraint.params.signingAlgsAllowed=
policyset.serverCertSet.8.constraint.params.signingAlgsAllowed=SHA1withRSA,SHA256withRSA,SHA384withRSA,SHA512withRSA,SHA1withDSA,SHA1withEC,SHA256withEC,SHA384withEC,SHA512withEC
Добавим новые блоки ответственные за подпись SAN (Альтернативные имена получателя). Это требование работы PKINIT, без SAN в записи сертификата PKINIT будет считать сертификат не верифицированным.
Сообщим сертификату о количестве и названиях блоков:
policyset.serverCertSet.list=
policyset.serverCertSet.list=1,2,3,4,5,6,7,8,9,10,11,12,13
В разных версиях может не хватать блока 11 и/или 12!
Если у вас нет блока 11, необходимо его дописать в конце файла. Блок:
policyset.serverCertSet.11.constraint.class_id=noConstraintImpl policyset.serverCertSet.11.constraint.name=No Constraint policyset.serverCertSet.11.default.class_id=userExtensionDefaultImpl policyset.serverCertSet.11.default.name=User Supplied Extension Default policyset.serverCertSet.11.default.params.userExtOID=2.5.29.17
Если у вас нет блока 12, необходимо его дописать в конце файла. Блок:
policyset.serverCertSet.12.constraint.class_id=noConstraintImpl policyset.serverCertSet.12.constraint.name=No Constraint policyset.serverCertSet.12.default.class_id=commonNameToSANDefaultImpl policyset.serverCertSet.12.default.name=Copy Common Name to Subject Alternative Name
Блок 13 должен выглядеть следующим образом, за исключением @FREE.IPA – вместо этого добавьте название своего доменного имени в верхнем регистре. Блок:
policyset.serverCertSet.13.constraint.class_id=noConstraintImpl policyset.serverCertSet.13.constraint.name=No Constraint policyset.serverCertSet.13.default.class_id=subjectAltNameExtDefaultImpl policyset.serverCertSet.13.default.name=Subject Alt Name Constraint policyset.serverCertSet.13.default.params.subjAltNameExtCritical=false policyset.serverCertSet.13.default.params.subjAltExtType_0=RFC822Name policyset.serverCertSet.13.default.params.subjAltExtPattern_0=$request.req_subject_name.cn$@FREE.IPA policyset.serverCertSet.13.default.params.subjAltExtGNEnable_0=true policyset.serverCertSet.13.default.params.subjAltExtType_1=OtherName policyset.serverCertSet.13.default.params.subjAltExtPattern_1=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_subject_name.cn$@FREE.IPA
policyset.serverCertSet.13.default.params.subjAltExtGNEnable_1=true policyset.serverCertSet.13.default.params.subjAltNameNumGNs=2
Сохраните изменения в файле.
Следующим шагом необходимо показать FreeIPA что у нас появился новый профиль. Для этого импортируем ранее редактируемый файл как профиль. Воспользуйтесь следующей командой:
ipa certprofile-import SecurLogon --file=SecurLogon.cfg
После всех манипуляций, сертификаты выпущенные с помощью созданного профиля будут проходить проверку PKINIT, и получать тикеты Kerberos.