Гайд по настройке Рутокен ЭЦП в Red OS 8: pam_pkcs11 «No matching certificate found» - Часть 4
13. Если используется authselect
Проверьте:
authselect current
Если вывод показывает активный профиль, ручные правки стандартных файлов могут перезаписаться.
Для тестов можно использовать отдельный файл /etc/pam.d/rutoken-test, он обычно не управляется authselect.
Для постоянной настройки лучше создать кастомный профиль:
sudo authselect create-profile rutoken --base-on minimal
Затем править файлы в:
/etc/authselect/custom/rutoken/
и применить:
sudo authselect select custom/rutoken
Это уже зависит от того, какой профиль у вас используется и какие политики требуются. Если нужно просто быстро проверить Рутокен — используйте отдельный PAM-сервис.
14. Проверьте права доступа к токену
PAM обычно выполняется с правами сервиса/рута, поэтому для самой аутентификации доступ чаще есть. Но для пользовательских тестов и графических компонентов может понадобиться доступ к USB-устройству.
Проверьте группу pcsc:
getent group | grep -iE 'pcsc|pcscd'
Если такая группа есть, можно добавить пользователя:
sudo usermod -aG pcscd username
или, если группа называется иначе:
sudo usermod -aG pcsc username
После этого нужен повторный вход. Можно также добавить udev-правило.
Сначала узнайте idVendor и idProduct:
lsusb | grep -iE 'rutoken|aktiv'
Пример вывода может содержать:
Bus 001 Device 005: ID 0a89:0060 Aktiv Co. ...
Где 0a89 — idVendor.
Создайте правило:
sudo tee /etc/udev/rules.d/99-rutoken-uaccess.rules > /dev/null <<'EOF'
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0a89", TAG+="uaccess"
EOF
Если idVendor другой, замените.
Примените:
sudo udevadm control --reload-rules
sudo udevadm trigger
После этого переподключите токен.
15. Проверьте зависимости библиотеки Рутокен
Иногда pam_pkcs11 не может загрузить librtpkcs11ecp.so из-за отсутствующих зависимостей.
Проверьте:
ldd "$RUTOKEN_MOD"
Не должно быть строк not found.
Если зависимости не найдены, установите соответствующие пакеты или выполните:
sudo ldconfig
Проверьте зависимости самого pam_pkcs11.so:
find /usr/lib64/security /usr/lib/security -name pam_pkcs11.so 2>/dev/null
Затем, подставив путь:
ldd /usr/lib64/security/pam_pkcs11.so
Если pam_pkcs11.so собран с NSS или OpenSSL, это влияет на способ хранения доверенных сертификатов.
Проверьте:
ldd /usr/lib64/security/pam_pkcs11.so | grep -Ei 'nss|ssl|crypto'
16. Если pam_pkcs11 использует NSS
Если в выводе ldd виден libnss3.so, значит модуль может использовать NSS-базу для проверки сертификатов. Тогда каталог /etc/pam_pkcs11/cacertificates может быть недостаточен.
Добавьте корневой сертификат в системную NSS-базу:
sudo certutil -A -d sql:/etc/pki/nssdb -n "Root CA" -t CT,C,C -i root_ca.pem
Если есть промежуточный:
sudo certutil -A -d sql:/etc/pki/nssdb -n "Intermediate CA" -t CT,C,C -i intermediate_ca.pem
Проверьте список:
certutil -L -d sql:/etc/pki/nssdb
Для удаления, если добавили неправильно:
sudo certutil -D -d sql:/etc/pki/nssdb -n "Root CA"
Если пакет certutil отсутствует:
sudo dnf install nss-tools
17. Если pam_pkcs11 использует OpenSSL
Если модуль использует OpenSSL, обычно достаточно:
ca_dir = /etc/pam_pkcs11/cacertificates;
и корректного openssl rehash.
Проверьте:
ls -l /etc/pam_pkcs11/cacertificates
Должны быть файлы сертификатов и хэш-ссылки вида:
1a2b3c4d.0 -> root_ca.pem
Проверьте сертификат:
openssl verify -CApath /etc/pam_pkcs11/cacertificates /tmp/rutoken-cert.pem
Если проверка не проходит:
- добавьте промежуточный УЦ;
- проверьте срок действия УЦ;
- проверьте время;
- проверьте, не используется ли самоподписанный пользовательский сертификат без добавления его как доверенного;
- проверьте CRL.
18. Проверьте соответствие сертификата и приватного ключа
pam_pkcs11 должен не только найти сертификат, но и использовать приватный ключ для подписи.
Проверьте объекты:
pkcs11-tool --module "$RUTOKEN_MOD" --login --list-objects --type cert,privkey
У сертификата и ключа должен совпадать ID. Если сертификатов много, а нужный ключ отсутствует или имеет другой ID, токен может быть корректно виден, но аутентификация не пройдёт.
Возможные решения:
- использовать сертификат, у которого есть соответствующий ключ;
- перезаписать контейнер/сертификат на токен так, чтобы
CKA_IDсовпадали; - удалить лишние сертификаты, если они мешают выбору;
- проверить через панель управления Рутокен или утилиту вендора.
19. Проверьте механизмы токена
Посмотрите поддерживаемые механизмы:
pkcs11-tool --module "$RUTOKEN_MOD" --list-mechanisms
Для ГОСТ-токенов там могут быть механизмы вида:
CKM_GOSTR3410
CKM_GOSTR3411
CKM_GOSTR3411_12
Для RSA:
CKM_RSA_PKCS
CKM_SHA256_RSA_PKCS
Если PAM после успешного маппинга начинает падать на механизмах, проблема может быть в несовместимости механизма подписи между pam_pkcs11 и токеном. Для входа по смарт-карте проще использовать сертификаты и ключи, механизмы которых точно поддерживаются вашей связкой.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.