Подробная гайд-инструкция по устранению ошибки инициализации Рутокен в РЕД ОС 7.2 - Часть 3
16. Временно проверьте с отключенным SELinux
В РЕД ОС может быть включен SELinux. Он иногда блокирует доступ к USB, PC/SC или файлам КриптоПро.
Проверьте режим:
getenforce
Если вывод:
Enforcing
Временно переведите в разрешающий режим:
sudo setenforce 0
Затем переподключите токен и снова проверьте:
pcsc_scan
/opt/cproc/bin/csptest -enum
Если после отключения SELinux всё заработало, значит нужно не оставлять систему в permissive, а добавить политику.
Посмотрите свежие запреты:
sudo ausearch -m avc -ts recent
Можно отфильтровать:
sudo ausearch -m avc -ts recent | grep -Ei 'pcscd|pcsc|usb|cprocsp|rutoken'
Если есть запреты, можно сгенерировать локальный модуль политики:
sudo ausearch -m avc -ts recent > /tmp/avc.log
sudo audit2allow -i /tmp/avc.log -M local_rutoken
sudo semodule -i local_rutoken.pp
sudo setenforce 1
Если audit2allow отсутствует, установите:
sudo dnf install policycoreutils-python policycoreutils-python-utils
или аналогичный пакет для РЕД ОС.
17. Отключите USB autosuspend для Рутокен
Иногда токен пропадает или не инициализируется из-за энергосбережения USB.
Создайте правило udev:
sudo tee /etc/udev/rules.d/99-rutoken-no-autosuspend.rules > /dev/null <<'EOF'
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0a89", ATTR{idProduct}=="0025", ATTR{power/autosuspend}="-1"
EOF
Перезагрузите правила:
sudo udevadm control --reload-rules
После этого переподключите Рутокен. Если у вас другая модель Рутокен, idProduct может отличаться.
Ваш случай:
idVendor = 0a89
idProduct = 0025
18. Если это виртуальная машина или удаленный доступ
VirtualBox
Если РЕД ОС работает в VirtualBox:
- В настройках ВМ включите USB 2.0 или USB 3.0.
- Добавьте USB-фильтр для устройства:
Vendor ID: 0a89
Product ID: 0025
- Убедитесь, что токен не занят хост-системой.
- После добавления фильтра переподключите токен и перезапустите ВМ.
VMware / Proxmox / KVM
Нужен полноценный USB passthrough именно устройства 0a89:0025, а не проброс всего хаба.
RDP / VDI
Если вы подключаетесь к РЕД ОС удаленно, токен должен быть корректно проброшен в сессию. Простого подключения к локальному компьютеру пользователя недостаточно, если операционная система работает на сервере.
Для FreeRDP обычно используется что-то вроде:
/usb:id,dev:0a89:0025
или параметры проброса устройств в конкретном клиенте.
19. Проверка зависимостей драйвера
Если драйвер Рутокен установлен, но pcscd всё равно не может его загрузить, проверьте отсутствующие библиотеки.
Найдите .so-файлы внутри установленных драйверов:
find /usr/lib/pcsc/drivers /usr/lib64/pcsc/drivers -name '*.so' 2>/dev/null
Для каждого файла можно проверить зависимости, например:
ldd /usr/lib/pcsc/drivers/librtpcsc.bundle/Contents/Linux/librtpcsc.so
Если в выводе есть строки:
not found
нужно установить соответствующую библиотеку. Чаще всего это зависимости от libusb, libpcsclite, librt, libc и т.п.
20. Полный диагностический набор команд
Если проблема сохранится, соберите один файл с диагностикой:
{
echo "=== OS ==="
cat /etc/os-release
uname -a
echo "=== USB ==="
lsusb
echo "=== Packages ==="
rpm -qa | grep -Ei 'pcsc|ccid|rutoken|cprocsp|lsb'
echo "=== PCSC drivers ==="
find /usr/lib /usr/lib64 -type d -name '*.bundle' 2>/dev/null
echo "=== Info.plist vendor search ==="
grep -R -Ei "0a89|0A89" /usr/lib/pcsc/drivers/*/Contents/Info.plist /usr/lib64/pcsc/drivers/*/Contents/Info.plist 2>/dev/null
echo "=== pcscd log ==="
sudo cat /tmp/pcscd-rutoken.log 2>/dev/null
echo "=== journal pcscd ==="
sudo journalctl -u pcscd -b --no-pager | tail -n 100
echo "=== CryptoPro packages ==="
rpm -qa | grep -Ei 'cprocsp|lsb-cprocsp'
echo "=== CryptoPro enum ==="
/opt/cproc/bin/csptest -enum 2>/dev/null
echo "=== CryptoPro keyset enum ==="
/opt/cproc/bin/csptest -keyset -enum -fqcn 2>/dev/null
echo "=== SELinux ==="
getenforce
sudo ausearch -m avc -ts recent | tail -n 100
} > ~/rutoken-diag.txt
Файл:
~/rutoken-diag.txt
можно приложить к обращению в поддержку Актив, РЕД ОС или КриптоПро.
21. Краткий вероятный сценарий исправления именно вашего случая
Ваш случай почти наверняка лечится так:
- Установить драйвер Рутокен для PC/SC.
- Убедиться, что появился
librtpcsc.bundleилиifd-rutoken.bundle. - Отключить конфликтующий
ifd-ccid.bundle. - Перезапустить
pcscd. - Проверить
pcsc_scan. - Проверить КриптоПро.
Команды коротко:
sudo systemctl stop pcscd.socket pcscd.service 2>/dev/null || true
sudo service pcscd stop 2>/dev/null || true
sudo killall pcscd 2>/dev/null || true
sudo dnf install -y pcsc-lite pcsc-lite-libs pcsc-tools
# Далее установить драйвер Актив:
# либо из репозитория, например:
sudo dnf install -y ifd-rutoken || sudo dnf install -y librtpcsc
# Если драйвер скачан с сайта Актив:
# распаковать архив и выполнить sudo ./install.sh
# либо:
# sudo dnf localinstall ./*.rpm
# Проверить, что драйвер появился:
find /usr/lib /usr/lib64 -type d -name '*.bundle' 2>/dev/null
# Временно отключить ccid:
for d in /usr/lib/pcsc/drivers /usr/lib64/pcsc/drivers; do
if [ -e "$d/ifd-ccid.bundle" ]; then
sudo mv "$d/ifd-ccid.bundle" "$d/ifd-ccid.bundle.disabled"
fi
done
# Запустить отладку:
sudo /usr/sbin/pcscd -f -d
В соседнем терминале:
pcsc_scan
Если токен появился, остановить отладочный pcscd через Ctrl+C и запустить службу:
sudo systemctl start pcscd.socket pcscd.service 2>/dev/null || sudo service pcscd start
22. Если ничего не помогло
Если после всех шагов в pcscd -d всё равно остается:
Aktiv Rutoken lite init failed
Или драйвер Рутокен установлен, но устройство не инициализируется:
- Попробуйте другой Рутокен, если есть.
- Попробуйте этот Рутокен на другой ОС, например на Windows, через «Панель управления Рутокен».
- Если на другом компьютере токен не виден вообще или определяется некорректно, возможна аппаратная неисправность или сбой прошивки токена.
- Если на другом компьютере токен работает, а на РЕД ОС нет — проблема в версии драйвера Актив, версии
pcsc-lite, ядре, SELinux или USB-пробросе. - Обновите систему:
sudo dnf update
или:
sudo yum update
После обновления желательно перезагрузить компьютер:
sudo reboot
Важно
Главная причина по вашим логам:
pcscd видит Рутокен, но пытается инициализировать его через ifd-ccid и получает init failed
Значит нужно:
- Установить родной драйвер Рутокен для PC/SC: обычно
librtpcscилиifd-rutoken. - Отключить или убрать конфликтующий
ifd-ccid.bundle, если других смарт-карт нет. - Убедиться, что
pcsc_scanвидит токен. - Только после этого проверять КриптоПро через:
/opt/cproc/bin/csptest -enum
/opt/cproc/bin/csptest -keyset -enum -fqcn
Если после установки драйвера Рутокен и отключения ccid токен появляется в pcsc_scan, но не появляется в КриптоПро, значит отдельно нужно доустановить компонент КриптоПро с поддержкой Рутокен и проверить права/SELinux.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.