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

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

2026.10.16                  


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

20. SELinux и другие ограничения

Проверьте режим:

getenforce

Если Enforcing, временно переведите в разрешающий режим:

sudo setenforce 0

Повторите тест:

sudo pamtester rutoken-test username authenticate

Если с выключенным SELinux заработало, верните:

sudo setenforce 1

И создайте локальную политику по логам:

sudo ausearch -m avc -ts recent | grep -iE 'pam|pcsc|pkcs11|rtpkcs11'



Затем, если нужно:

sudo ausearch -m avc -ts recent | audit2allow -M pam_pkcs11_local
sudo semodule -i pam_pkcs11_local.pp

Пакет audit2allow может быть в policycoreutils-devel или аналогичном пакете.


Не оставляйте setenforce 0 постоянно без крайней необходимости.


21. Типовой алгоритм локализации ошибки

Чтобы быстро понять, где проблема, действуйте так:

Шаг 1. Токен виден?

lsusb
systemctl status pcscd
pkcs11-tool --module "$RUTOKEN_MOD" --list-slots

Если нет — проблема с драйверами, USB, pcscd, виртуализацией.


Шаг 2. Сертификат виден?

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

Если нет — сертификат не на токене, не тот модуль, не тот слот, объект скрыт.


Шаг 3. Есть ли ключ и совпадает ли ID?

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

Если ключа нет или ID отличается — входа не будет.


Шаг 4. Временно выключите проверку УЦ

В /etc/pam_pkcs11/pam_pkcs11.conf:

verify = false;

Если заработало — проблема в цепочке доверия, CRL, сроках, времени или ГОСТ.


Шаг 5. Проверьте маппинг

Включите в PAM:

auth sufficient pam_pkcs11.so debug

Смотрите:

sudo journalctl -f | grep -i pam_pkcs11

или:

sudo tail -f /var/log/secure

Найдите строку с certificate subject или похожую.


Скопируйте субъект точно и добавьте в:

/etc/pam_pkcs11/subject_mapping

В формате:

<subject из лога> = <логин>

Шаг 6. Верните verify = true

Если с verify = true снова не работает, чините:

  • УЦ;
  • цепочку;
  • openssl rehash;
  • CRL;
  • время;
  • EKU;
  • поддержку ГОСТ.

22. Пример минимального рабочего набора файлов

/etc/pam_pkcs11/pam_pkcs11.conf

pam_pkcs11 {
    use_pkcs11_module = "rutoken";

    pkcs11_module rutoken {
        module = /usr/lib64/librtpkcs11ecp.so;
        description = "Rutoken ECP";
    }

    use_mappers = "subject";

    mapper subject {
        mapfile = /etc/pam_pkcs11/subject_mapping;
    }

    verify = true;
    ca_dir = /etc/pam_pkcs11/cacertificates;
    crl_dir = /etc/pam_pkcs11/crl;
}

/etc/pam_pkcs11/subject_mapping

/C=RU/O=Example/CN=ivan@example.com = ivan

или, в зависимости от формата в логах:

C = RU, O = Example, CN = ivan@example.com = ivan

или, если формат из отладки именно такой:

CN=ivan@example.com,O=Example,C=RU = ivan

Главное — совпадение с тем, что пишет pam_pkcs11 в debug.


PAM-строка в нужном сервисе

Для варианта с резервным паролем:

auth sufficient pam_pkcs11.so debug

Для более строгого варианта:

auth requisite pam_pkcs11.so debug

23. Частые ошибки и решения

Симптом Вероятная причина Что проверить
No matching certificate found нет маппинга пользователя /etc/pam_pkcs11/subject_mapping, debug
No matching certificate found сертификат не прошёл проверку verify, УЦ, сроки, CRL
no certificate found токен или сертификат не видны pkcs11-tool --list-objects --type cert
Сертификат виден, но вход не работает нет приватного ключа или другой CKA_ID pkcs11-tool --list-objects --type privkey
Работает с verify = false, не работает с true нет доверия к УЦ ca_dir, openssl rehash, цепочка
Ошибка с ГОСТ-сертификатом нет поддержки ГОСТ в ОС/ OpenSSL / PAM ГОСТ-провайдер, openssl x509, вендорные пакеты
Временно работает только из-под root права на USB/pcsc udev, pcscd, группы, uaccess
После перезагрузки всё слетело authselect перезаписал PAM authselect current, кастомный профиль
openssl x509 не читает сертификат DER/PEM или ГОСТ конвертация, GOST engine/provider
Субъект с русскими буквами не совпадает кодировка/формат копировать точный subject из debug



24. Быстрый диагностический набор команд

Можно прогнать это по очереди:

# Путь к библиотеке
find /usr/lib64 /usr/lib -name 'librtpkcs11ecp.so*' 2>/dev/null

# Задайте путь вручную, например:
export RUTOKEN_MOD=/usr/lib64/librtpkcs11ecp.so

# PC/SC
systemctl status pcscd
journalctl -u pcscd --no-pager | tail -30

# USB
lsusb | grep -iE 'rutoken|aktiv'

# Слоты
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

# Механизмы
pkcs11-tool --module "$RUTOKEN_MOD" --list-mechanisms

# Логи
sudo journalctl -f | grep -iE 'pam_pkcs11|pcscd|pkcs11'
sudo tail -f /var/log/secure 2>/dev/null | grep -i pam_pkcs11

25. Рекомендуемый порядок действий именно для вашей ошибки

Для вашего сообщения я бы сделал так:

1. Убедиться, что токен виден:

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

2. Убедиться, что сертификат и ключ есть:

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

3. Временно поставить в /etc/pam_pkcs11/pam_pkcs11.conf:

   verify = false;
   use_mappers = "subject";

4. Создать /etc/pam_pkcs11/subject_mapping и добавить туда строку:

   <subject сертификата> = <локальный пользователь>

5. Создать тестовый /etc/pam.d/rutoken-test с:

   auth sufficient pam_pkcs11.so debug
   auth required pam_deny.so
   account required pam_permit.so
   session required pam_permit.so

6. Выполнить:

   sudo pamtester rutoken-test username authenticate
  1. Если не работает — смотреть в логах, дошло ли до найденного сертификата и какой именно subject он ожидает. Исправить subject_mapping по логу.
  2. Если заработало с verify = false, вернуть verify = true, добавить корневой и промежуточный сертификаты УЦ в /etc/pam_pkcs11/cacertificates, выполнить openssl rehash и снова протестировать.
  3. Если verify = true не работает с ГОСТ-сертификатом, отдельно решать вопрос поддержки ГОСТ или осознанно принимать решение о работе без проверки цепочки, если это разрешено вашей политикой безопасности.

Если после этих шагов ошибка останется, пришлите, пожалуйста, несколько выводов без конфиденциальных данных:

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
cat /etc/pam_pkcs11/pam_pkcs11.conf
cat /etc/pam_pkcs11/subject_mapping
sudo grep -i pam_pkcs11 /var/log/secure | tail -50

и последние строки из journalctl во время попытки входа — тогда можно будет точно сказать, на каком именно этапе pam_pkcs11 отвергает сертификат.


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


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

Комментарии

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