Created attachment 9655 [details] pamtester.txt Образ: alt-workstation-9.8900-20210806-x86_64.iso (ftp.altlinux.org/pub/people/sem/alt-workstation-9.8900-20210806-x86_64.iso) обновлен до p10 В качестве токена используется Рутокен ЭЦП 2.0 3000 Была произведена следующая настройка: Cгенерирована ключевая пара: # pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45 Создан сертификат: # openssl OpenSSL> engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines-1.1/libpkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/librtpkcs11ecp.so OpenSSL> req -engine pkcs11 -new -key 45 -keyform engine -x509-out CA.pem -text OpenSSL> x509 -in CA.pem -out cert.crt -outform DER Сохранен сертификат на токене: # pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45 # pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -lO Using slot 0 with a present token (0x0) Logging in to "Rutokenecp". Please enter User PIN: Public Key Object; RSA 2048 bits label: ID: 45 Usage: encrypt, verify, wrap Private Key Object; RSA label: ID: 45 Usage: decrypt, sign, unwrap Certificate Object; type = X.509 cert label: subject: DN: C=RU ID: 45 Отредактирован файл /etc/security/pam_pkcs11/pam_pkcs11.conf: #use_pkcs11_module = opensc; use_pkcs11_module = rutoken; pkcs11_module rutoken { ca_dir = /etc/security/pam_pkcs11/cacerts; crl_dir = /etc/security/pam_pkcs11/crls; module = /usr/lib64/librtpkcs11ecp.so; cert_policy = subject; description = "Rutoken ECP"; slot_description = "none"; } Включена аутентификация по токену: # control system-auth pkcs11 Добавлена информация об удостоверяющем центре: # cp CA.pem /etc/security/pam_pkcs11/cacerts/ # certutil -A -n 'Root CA' -t 'CT,C,C' -a -d /etc/pki/nssdb/ -i ./CA.pem Добавлена информация о сертификате в домашний каталог пользователя: # mkdir /home/test/.eid/ # cat CA.pem > /home/test/authorized_certificates Войти в систему, введя PIN от токена. В результате вход в графическую сессию не происходит и появляется ошибка: "Нет подходящего сертификата." Приложил вывод pamtester в файл pamtester.txt Выполнил аналогичные шаги в p9 с тем же токеном - в результате аутентификация по USB-токену работает корректно.
> DEBUG:mapper_mgr.c:324: Mapper module digest match() returns 0 > DEBUG:mapper_mgr.c:324: Mapper module cn match() returns -1 > DEBUG:mapper_mgr.c:331: Error in module cn > DEBUG:mapper_mgr.c:324: Mapper module pwent match() returns -1 > DEBUG:mapper_mgr.c:331: Error in module pwent > DEBUG:mapper_mgr.c:324: Mapper module uid match() returns -1 > DEBUG:mapper_mgr.c:331: Error in module uid > DEBUG:mapper_mgr.c:324: Mapper module mail match() returns 0 > DEBUG:mapper_mgr.c:324: Mapper module subject match() returns 0 > DEBUG:mapper_mgr.c:324: Mapper module null match() returns 0 > DEBUG:pam_pkcs11.c:982: certificate is valid but does not match the user Я не вижу в этом списке "Mapper module opensc", поэтому > # cat CA.pem > /home/test/authorized_certificates не имеет смысла. Посмотрите, пожалуйста, что в use_mappers в /etc/security/pam_pkcs11/pam_pkcs11.conf ? Если вы хотите идентифицировать пользователей по ~/.eid/authorized_certificates, в use_mappers должен быть opensc. И, кстати, /home/test/authorized_certificates -- это опечатка у вас?
> И, кстати, /home/test/authorized_certificates -- это опечатка у вас? Да, это опечатка. > Если вы хотите идентифицировать пользователей по > ~/.eid/authorized_certificates, в use_mappers должен быть opensc. Спасибо, это помогло. В /etc/security/pam_pkcs11/pam_pkcs11.conf в p9 по умолчанию стоит: use_mappers = openssh, opensc; а в p10 (и в сизифе) use_mappers = digest, cn, pwent, uid, mail, subject, null; Из-за чего в p10 и не работало. Задачу закрываю как NOTAGUB