Гайд по настройке Рутокен ЭЦП в Red OS 8: pam_pkcs11 «No matching certificate found» - Часть 4

Подробный гайд по настройке Рутокен ЭЦП в Red OS 8: пошагово решаем ошибку pam_pkcs11 «No matching certificate found» при входе в систему.

2026.10.16                  


Гайд по настройке Рутокен ЭЦП в Red OS 8: pam_pkcs11 «No matching certificate found» - Часть 4Гайд по настройке Рутокен ЭЦП в 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 и токеном. Для входа по смарт-карте проще использовать сертификаты и ключи, механизмы которых точно поддерживаются вашей связкой.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта