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

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

2026.10.16                  


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

Ошибка

ERROR:pam_pkcs11.c:646: no valid certificate which meets all requirements found
Error 2336L No matching certificate found

Обычно означает одно из четырёх:

  1. pam_pkcs11 видит токен, но не находит на нём подходящий сертификат.
  2. Сертификат есть, но он не проходит проверку: просрочен, нет доверия к УЦ, нет цепочки, неправильные Key Usage / Extended Key Usage, проблема с CRL/временем/ГОСТ.
  3. Сертификат проходит проверку, но не сопоставлен локальному пользователю в subject_mapping или другом mapper.
  4. Используется не тот PKCS#11-модуль, не тот слот, 32/64-битная несовместимость, сертификат без привязанного приватного ключа или ключ имеет другой CKA_ID.



Гайд для Red OS 8 с акцентом на устранение именно этой ошибки.


0. Безопасность перед правкой PAM

Перед изменениями держите открытым root-терминал. Ошибка в PAM может временно заблокировать вход.

Сделайте резервные копии:

sudo cp -a /etc/pam.d /root/pam.d.backup-$(date +%F-%H%M)
[ -d /etc/pam_pkcs11 ] && sudo cp -a /etc/pam_pkcs11 /root/pam_pkcs11.backup-$(date +%F-%H%M)

Если используете authselect, проверьте:

authselect current

Если authselect управляет PAM, ручные правки /etc/pam.d/system-auth, /etc/pam.d/password-auth и т.п. могут быть перезаписаны. Для продакшена лучше создавать кастомный профиль authselect. Для диагностики можно использовать отдельный тестовый PAM-сервис, например rutoken-test, о нём ниже.


1. Установите необходимые пакеты

В Red OS 8 обычно используются dnf, pcsc-lite, opensc, pam_pkcs11, p11-kit.

Минимальный набор:

sudo dnf install pcsc-lite pcsc-lite-ccid opensc pam_pkcs11 p11-kit openssl gnutls-utils

Опционально для диагностики:

sudo dnf install pcsc-tools nss-tools pamtester

Если каких-то пакетов нет в репозиториях, имена могут немного отличаться.


Ищите так:

dnf search pcsc
dnf search ccid
dnf search pam_pkcs11
dnf search nss-tools

2. Установите драйверы/библиотеку Рутокен ЭЦП

Для Рутокен ЭЦП нужен не только общий opensc, но и родная PKCS#11-библиотека Рутокен, обычно это librtpkcs11ecp.so.

Проверьте, есть ли она:

find /usr/lib64 /usr/lib -name 'librtpkcs11ecp.so*' 2>/dev/null

Пример ожидаемого пути:

/usr/lib64/librtpkcs11ecp.so

или:

/usr/lib/librtpkcs11ecp.so

Если библиотеки нет, установите пакеты Рутокен для Red OS 8.


В репозиториях они могут называться примерно так:

dnf search rutoken
dnf provides '*/librtpkcs11ecp.so*'

Если пакеты скачаны с сайта Рутокен в виде RPM, установка обычно такая:

sudo dnf install ./rutoken-ecp-*.rpm

или:

sudo rpm -ivh rutoken-ecp-*.rpm
sudo ldconfig

После установки снова найдите библиотеку и запомните путь.


Дальше я буду использовать переменную:

export RUTOKEN_MOD=/usr/lib64/librtpkcs11ecp.so

Если у вас путь другой, например /usr/lib/librtpkcs11ecp.so, поправьте команды.


Проверьте, что библиотека 64-битная, если система 64-битная:

file "$RUTOKEN_MOD"

Для PAM на 64-битной системе нужна 64-битная библиотека.


Если есть только librtpkcs11ecp.so.1, можно использовать её или сделать симлинк:

sudo ln -s /usr/lib64/librtpkcs11ecp.so.1 /usr/lib64/librtpkcs11ecp.so

3. Запустите и проверьте PC/SC

Рутокен должен определяться как смарт-карта через pcscd.

sudo systemctl enable --now pcscd.service
sudo systemctl enable --now pcscd.socket 2>/dev/null || true
sudo systemctl restart pcscd.service

Проверьте статус:

systemctl status pcscd.service
journalctl -u pcscd --no-pager | tail -50

Вставьте токен и проверьте, виден ли он:

lsusb | grep -iE 'rutoken|aktiv'

Если есть pcsc-tools:

pcsc_scan

Утилита покажет читатель и карту. Для выхода — Ctrl+C.


Если pcsc_scan нет, можно проверить через opensc-tool:

opensc-tool -l

или через pkcs11-tool, но уже с библиотекой Рутокен.


Если токен не виден:

  • попробуйте другой USB-порт, желательно USB 2.0;
  • не используйте USB-хаб;
  • если это виртуальная машина, проверьте проброс USB-устройства;
  • проверьте dmesg после вставки токена:


dmesg | tail -30

4. Проверьте видимость токена через PKCS#11 Рутокен

Используйте именно библиотеку Рутокен, не только opensc-pkcs11.so.

Список слотов:

pkcs11-tool --module "$RUTOKEN_MOD" --list-slots

Должен быть слот с токеном Рутокен.


Проверьте сертификаты:

pkcs11-tool --module "$RUTOKEN_MOD" --login --list-objects --type cert

Проверьте приватные ключи:

pkcs11-tool --module "$RUTOKEN_MOD" --login --list-objects --type privkey

Вас интересует наличие пары:

  • X.509 cert — сертификат;
  • Private key — соответствующий приватный ключ.

Очень важно: у сертификата и приватного ключа желательно должен совпадать ID/CKA_ID.


Пример:

Certificate object; X.509 cert with label "user cert"
  ID: 01
Private key object; ...
  ID: 01
  • Если сертификаты есть, а ключей нет, или ID разные, pam_pkcs11 может не считать сертификат пригодным для входа.
  • Если сертификат не виден без --login, проверяйте с --login. На некоторых токенах объекты могут быть видны только после входа с PIN-пользователя.

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


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

Комментарии

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