Bug 40891 - Не удается войти в систему по USB-токену
Summary: Не удается войти в систему по USB-токену
Status: CLOSED NOTABUG
Alias: None
Product: Branch p10
Classification: Unclassified
Component: pam_pkcs11 (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: manowar@altlinux.org
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-09-09 17:24 MSK by Sergey Ivanov
Modified: 2021-10-19 16:14 MSK (History)
2 users (show)

See Also:


Attachments
pamtester.txt (9.64 KB, text/plain)
2021-09-09 17:24 MSK, Sergey Ivanov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Ivanov 2021-09-09 17:24:31 MSK
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-токену работает корректно.
Comment 1 manowar@altlinux.org 2021-10-01 13:39:55 MSK
> 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 -- это опечатка у вас?
Comment 2 Sergey Ivanov 2021-10-19 16:14:27 MSK
>   И, кстати, /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