Подробный гайд: pcsc_scan не видит Рутокен на Альт Линукс в ВМ zVirt - Часть 4
14. Если интерфейс не 0x0b, а 0xff или другой
Если в lsusb -v вы видите:
bInterfaceClass 0xff Vendor Specific
то обычный pcsc-lite-ccid может не работать.
В этом случае нужно:
- Уточнить точную модель Рутокена.
- Посмотреть документацию Рутокен для этой модели под Альт Линукс.
- Проверить наличие специальных пакетов Рутокен.
Поиск в репозитории:
apt-cache search rutoken
apt-cache search aktiv
apt-cache search pkcs11
Если есть пакеты вроде librtpkcs11ecp или аналогичные, их используют уже после того, как устройство начнёт определяться. Но openct я бы не ставил просто так. Для современных Рутокенов, которые работают как CCID, он обычно не нужен и может конфликтовать.
15. Если конфигураций несколько
Проверьте:
sudo lsusb -v -d 0a89:0030 | grep -E 'bNumConfigurations|bConfigurationValue|bInterfaceClass'
Если bNumConfigurations больше одной, нужно понять, какая конфигурация содержит интерфейс 0x0b.
Посмотрите полный вывод:
sudo lsusb -v -d 0a89:0030
Найдите блок:
Configuration Descriptor
и внутри него:
Interface Descriptor
Если нужная конфигурация не активна, иногда можно попробовать переключить:
echo N | sudo tee "$DEV/bConfigurationValue"
где N — номер нужной конфигурации из bConfigurationValue. Но это может не поддерживаться или привести к переподключению устройства. Если не уверены, лучше не делать без необходимости.
16. Проверка после исправления
После изменений повторите:
sudo systemctl stop pcscd pcscd.socket 2>/dev/null
sudo rm -rf /var/run/pcscd
sudo /usr/sbin/pcscd -afd
В логе pcscd нужно увидеть:
Looking for a driver for VID: 0x0A89, PID: 0x0030
Затем в отдельном терминале:
pcsc_scan
Ожидаемый результат примерно:
Reader 0: Aktiv Rutoken ECP 00 00
Card state: Card inserted
или:
Card state: Card removed
Если ридер появился, но карта не читается, снова смотрите dmesg, питание, автосон и проброс.
Также можно проверить:
opensc-tool -l
17. Если Рутокен нужен для подписи / КриптоПро / PKCS#11
pcsc_scan не зависит от opensc и PKCS#11-модулей. Он только показывает ридер.
Для работы с Рутокеном в криптографических сценариях обычно нужны пакеты Рутокен, например:
apt-cache search librtpkcs11ecp
Если пакет есть, можно установить:
sudo apt-get install librtpkcs11ecp
Затем найти модуль:
rpm -ql librtpkcs11ecp | grep librtpkcs11ecp.so
И проверить слоты:
pkcs11-tool --module /путь/к/librtpkcs11ecp.so --list-slots
Но это уже после того, как pcsc_scan увидит ридер.
18. Что собрать, если проблема останется
Для дальнейшей диагностики полезны выводы:
lsusb -t
sudo lsusb -v -d 0a89:0030
sudo dmesg | grep -Ei 'usb|0a89'
journalctl -b | grep -Ei 'usb|pcsc|udev|0a89'
Проверка sysfs:
DEV=$(grep -l 0a89 /sys/bus/usb/devices/*/idVendor 2>/dev/null | head -n1 | xargs -r dirname)
echo "DEV=$DEV"
if [ -n "$DEV" ]; then
cat "$DEV/bConfigurationValue" 2>/dev/null
cat "$DEV/authorized" 2>/dev/null
cat "$DEV/speed" 2>/dev/null
ls -d "$DEV":* 2>/dev/null
for i in "$DEV":*; do
echo "$i"
cat "$i/bInterfaceClass" 2>/dev/null
done
fi
Проверка udev:
if [ -n "$DEV" ]; then
udevadm info --query=property --path="$DEV"
for i in "$DEV":*; do
echo "=== $i ==="
udevadm info --query=property --path="$i" 2>/dev/null
done
fi
И запуск pcscd:
sudo /usr/sbin/pcscd -afd
19. Краткий вывод по вашей ситуации
Самое вероятное направление:
- Рутокен в ВМ виден через
lsusb, но не имеет корректного активного интерфейсаSmart Cardв/sys. - Поэтому
pcscdчерезlibudevне получает его как устройство класса0x0b. - Нужно проверять:
- вывод
lsusb -v -d 0a89:0030; dmesg;/sys/bus/usb/devices;- проброс в zVirt;
- тип USB-контроллера;
udev;authorized;- SELinux/
usbguard.
- вывод
Правка Info.plist и установка openct пока не выглядят основным решением.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.