Гайд: LIBUSB_ERROR_NO_DEVICE и pcscd с Рутокен в Astra Linux через VirtualHere - Часть 3
10. Если используется виртуальная машина
Если у вас не локальный компьютер, а виртуальная машина, важно понять, как именно токен попадает внутрь.
10.1. Лучший вариант
Если вы управляете гипервизором:
- пробросьте целый контроллер;
- или пробросьте физический токен средствами гипервизора;
- или используйте прямое подключение к хосту, на котором стоит клиент.
Нежелательно делать цепочку:
VirtualHere сервер → клиент на хосте → проброс виртуального устройства в гостевую ОС
Лучше:
токен → сервер → клиент внутри гостевой ОС
10.2. Если это облачная виртуалка
Если это облачная виртуалка, физический токен не подключен к хосту напрямую. Вы используете проброс через сеть от другой машины. Для смарт-карт это часто нестабильно.
В таких сценариях обычно есть только два рабочих пути:
- Использовать токен на локальной машине, а в виртуалку передавать уже подписанные документы или использовать сетевой сервис подписи.
- Использовать специализированные сетевые решения подписи или облачные подписи.
Если речь именно про удаленную виртуалку в облаке и токен физически находится в другом месте, шанс стабильной работы через сеть невелик, особенно через интернет.
11. Проверка стабильности токена в течение времени
Разовый успех pkcs11-tool не означает, что проброс стабилен.
Запустите циклическую проверку:
while true; do
date
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots || break
sleep 2
done
Параллельно смотрите:
sudo journalctl -u pcscd -f
sudo dmesg -wH
Если через несколько секунд или минут появляется ошибка — проблема транспорта.
12. Проверка Рутокена через OpenSC и PKCS#11
Если pcscd стабилен, проверьте токен.
12.1. Проверка имени карты
opensc-tool -n
12.2. Проверка слотов
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-slots
12.3. Проверка токенов
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-token-slots
12.4. Проверка объектов
Если токен инициализирован:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-objects
Если нужна авторизация:
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --login --pin 'ВАШ_PIN' --list-objects
12.5. Проверка механизмов
pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --list-mechanisms
Если эти команды работают стабильно, а КриптоПро токен не видит — проблема не в pcscd, а в настройках КриптоПро или в формате контейнера на токене.
13. Почему КриптоПро видит флешки, но не видит токен
Это очень важный момент. КриптоПро может видеть контейнеры на флешке, потому что флешка — это файловая система. КриптоПро просто читает файлы контейнера с диска.
Токен — это не флешка. Для КриптоПро токен должен быть:
- Доступен как считыватель через PC/SC.
- Стабильно отвечать на команды.
- Содержать контейнер в формате КриптоПро или поддерживаться как совместимый аппаратный носитель.
Если на токене ключи созданы через:
- Рутокен Панель управления;
- OpenSSL;
- PKCS#11;
- другие криптографические библиотеки;
— КриптоПро может не воспринимать их как свои контейнеры. То есть токен может быть виден в pkcs11-tool, но не виден в КриптоПро, потому что КриптоПро ожидает свой формат ключевого контейнера.
14. Проверка компонентов КриптоПро
Проверьте установленные пакеты:
dpkg -l | grep -Ei 'cprocsp'
Для работы смарт-карт обычно нужен компонент поддержки, который в поставках КриптоПро часто называется примерно так:
cprocsp-rdr-pcsc
Если он не установлен, установите его из пакета КриптоПро.
Если используется репозиторий:
sudo apt install cprocsp-rdr-pcsc
Если установка из дистрибутива:
sudo dpkg -i /путь/к/пакету/cprocsp-rdr-pcsc*.deb
В зависимости от версии КриптоПро и дистрибутива название может отличаться. Ориентируйтесь на состав поставки вашей версии КриптоПро. Также в некоторых конфигурациях для токенов может требоваться отдельный компонент или настройка считывателей. Проверьте документацию к вашей версии КриптоПро.
15. Проверка КриптоПро из командной строки
Пути могут отличаться в зависимости от архитектуры.
Для 64-битной системы обычно используется:
/opt/cprocsp/bin/amd64/
Проверка сертификатов:
/opt/cprocsp/bin/amd64/certmgr -list
Просмотр ключевых контейнеров может отличаться в разных версиях.
Можно попробовать:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_containers -verifycontext -fqcn
Если команда не принимает такие ключи, посмотрите справку:
/opt/cprocsp/bin/amd64/csptest -keyset -help
Также можно проверить считыватели, если в поставке есть утилита cpconfig:
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view
Если команда недоступна, используйте графическую утилиту КриптоПро или документацию к вашей версии.
16. Проверка от пользователя и от root
Иногда токен виден только от root, потому что у пользователя нет доступа к сокету PC/SC.
Проверьте:
/opt/cprocsp/bin/amd64/certmgr -list
Затем:
sudo /opt/cprocsp/bin/amd64/certmgr -list
Если от root токен появляется, а от пользователя нет — проблема в правах доступа к /run/pcscd или в группах пользователя.
17. Если КриптоПро настроен на конкретный считыватель
Иногда в КриптоПро бывает настроен конкретный считыватель. При переподключениях через сеть имя считывателя может меняться.
Например:
Aktiv Rutoken lite 01 00
Может превращаться в:
Aktiv Rutoken lite 01 00 00
или похожий вариант.
Рекомендация:
- не жестко привязываться к имени считывателя;
- использовать вариант «все считыватели», если он доступен;
- удалить старые несуществующие считыватели из настроек КриптоПро.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.