Гайд: Устранение No slot with a token was found для Рутокен S и pkcs11-tool в Linux - Часть 3
14. Если используется WSL, контейнер или виртуальная машина
В таких средах токен часто не пробрасывается корректно.
Проверьте:
- в
lsusbустройство видно; - но внутри
/devнет соответствующего USB-доступа; pcsc_scanничего не видит.
Для WSL нужен корректный проброс через usbipd-win или аналог. Для виртуалки — проброс USB-устройства в гостевую ОС.
15. Рекомендуемый порядок диагностики
Сделайте последовательно:
lsusb | grep -i aktiv
systemctl status pcscd
sudo systemctl enable --now pcscd
pcsc_scan
ldd /usr/lib/librtpkcs11ecp.so | grep "not found"
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
Если есть librtpkcs11.so, проверьте и её:
pkcs11-tool --module /usr/lib/librtpkcs11.so --list-slots
Проверка от root:
sudo pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
16. Минимальный рабочий набор команд для проверки
После установки пакетов и запуска pcscd:
sudo apt install pcscd libpcsclite1 libccid opensc pcsc-tools
sudo systemctl enable --now pcscd
pcsc_scan
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-objects
Для Fedora/RHEL:
sudo dnf install pcsc-lite-libs pcsc-lite ccid opensc
sudo systemctl enable --now pcscd
pcsc_scan
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --list-slots
17. Что делать, если pcsc_scan видит токен, а pkcs11-tool — нет
Значит, PC/SC работает, проблема в библиотеке Рутокен.
Проверьте:
1. Правильная ли библиотека для модели:
librtpkcs11ecp.so;librtpkcs11.so.
2. Зависимости:
ldd /usr/lib/librtpkcs11ecp.so
3. Архитектуру:
file /usr/lib/librtpkcs11ecp.so
4. Полный путь:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
5. Отладку:
OPENSC_DEBUG=9 pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
18. Что делать, если pcsc_scan тоже не видит токен
Тогда проблема не в pkcs11-tool.
Проверьте:
1. Пакеты
sudo apt install pcscd libpcsclite1 libccid
или:
sudo dnf install pcsc-lite ccid
2. Службу
sudo systemctl restart pcscd
3. Другой USB-порт
Желательно напрямую в материнскую плату, без хаба.
4. Другой компьютер
Если pcsc_scan не видит токен нигде — возможен аппаратный сбой или неинициализированный/заблокированный токен.
5. Права
sudo pcsc_scan
Если от root видит, а от пользователя нет — добавьте пользователя в plugdev и перезапустите сессию:
sudo usermod -aG plugdev $USER
19. Пример корректного вывода
Если всё нормально, --list-slots может выглядеть примерно так:
Available slots:
Slot 0 (0x0): Aktiv Rutoken S
token label : RUTOKEN
token manufacturer : Aktiv Co.
token model : Rutoken S
token flags : rng, token initialized, PIN initialized
После этого можно смотреть объекты:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-objects
Если на токене есть сертификат, вы увидите что-то вроде:
Certificate Object; type = X.509 cert
label: ...
subject: DN: CN=..., C=RU, ...
ID: ...
20. Самый вероятный сценарий в вашем случае
Судя по описанию:
lsusbвидит устройство;pkcs11-toolговоритNo slot with a token was found.
Наиболее вероятные причины по убыванию:
- Не запущен или не установлен
pcscd. - Не установлен
ccid. - Для Rutoken S используется не та библиотека: нужна не
librtpkcs11ecp.so, аlibrtpkcs11.soили другой пакет Рутокен. - У обычного пользователя нет прав на USB-устройство.
- Библиотека установлена вручную, но не хватает зависимостей.
Начните с:
sudo apt install pcscd libpcsclite1 libccid opensc pcsc-tools
sudo systemctl enable --now pcscd
pcsc_scan
Затем:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
Если не поможет — проверьте:
ls -l /usr/lib/librtpkcs11*
ls -l /usr/lib64/librtpkcs11*
pkcs11-tool --module /usr/lib/librtpkcs11.so --list-slots
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.