Гайд: Manjaro: как проверить USB, PC/SC, драйверы Рутокен и компоненты КриптоПро - Часть 1
Первая часть подробного практического гайда для Manjaro (до 10 раздела включительно): что проверять и как чинить, если КриптоПро CSP не видит контейнер на токене Рутокен 3220.
Главная мысль: контейнер в КриптоПро появится только если работают три уровня:
- USB/ядро Linux видит токен —
lsusb,dmesg. - PC/SC видит смарт-карту —
pcscd,pcsc_scan, драйвер Рутокен. - КриптоПро видит PC/SC-устройство и контейнер — пакеты КриптоПро, права пользователя, модули
pcsc/rutoken.
Если токен не виден хотя бы на первом или втором уровне, КриптоПро контейнер не увидит.
0. Быстрая диагностика
Выполните в терминале:
lsusb | grep -Ei 'rutoken|aktiv|0a89'
pcsc_scan -n
/opt/cprocsp/sbin/amd64/csptest -enum -enum_cont -verifyc -fqcn
Интерпретация:
| Результат | Где проблема |
|---|---|
lsusb не показывает Рутокен |
USB, порт, кабель, питание, аппаратная проблема |
lsusb видит, но pcsc_scan не видит reader/card |
pcsc-lite, драйвер Рутокен, ccid, права, конфликт |
pcsc_scan видит карту, но csptest не видит контейнер |
КриптоПро: не установлены пакеты rdr-pcsc, rdr-gost, rdr-rutoken, права, версия, пустой токен |
sudo csptest ... видит, а обычный пользователь нет |
права доступа к pcscd |
Контейнер виден в csptest, но не виден в браузере/плагине |
проблема плагина, браузера, sandbox, Wayland, окружения |
1. Обновите систему и поставьте базовые пакеты
Для начала:
sudo pacman -Syu
sudo pacman -S --needed base-devel git usbutils
Если используете AUR через yay:
sudo pacman -S --needed yay
Либо можно использовать pamac, он в Manjaro обычно есть.
После обновления желательно перезагрузиться:
reboot
2. Проверьте, видит ли система токен на уровне USB
Подключите Рутокен напрямую в USB-порт, желательно без хаба. Лучше использовать USB 2.0 или другой порт, если есть подозрения на питание.
Выполните:
lsusb | grep -Ei 'rutoken|aktiv|0a89'
Пример нормального вывода:
Bus 001 Device 005: ID 0a89:xxxx Aktiv Co. Rutoken ...
Если строки нет, смотрите, что происходит при подключении:
sudo dmesg -w
Затем воткните токен. В выводе должны появиться сообщения о новом USB-устройстве.
Возможные варианты:
2.1. Устройство вообще не появляется
Проверьте:
- другой USB-порт;
- другой компьютер;
- без USB-хаба;
- другой кабель/переходник, если используется;
- не повреждён ли токен;
- не мигает ли индикатор так, будто устройство в режиме прошивки/ошибки.
Если токен не определяется нигде, проблема может быть аппаратной.
2.2. Устройство появляется с ошибками
Если в dmesg есть ошибки вроде:
device descriptor read/64, error
device not accepting address
reset SuperSpeed USB device
Часто помогают:
- другой порт;
- отключение энергосбережения USB;
- USB 2.0 вместо USB 3.0;
- отключение хаба;
- обновление прошивки токена через официальную утилиту Рутокен.
3. Установите и запустите PC/SC
КриптоПро в Linux обычно работает с токенами через PC/SC. Поэтому сначала нужно добиться, чтобы токен был виден в pcsc_scan.
Установите:
sudo pacman -S --needed pcsc-lite pcsc-tools ccid libusb
Включите и запустите pcscd:
sudo systemctl enable --now pcscd.socket
sudo systemctl restart pcscd.socket pcscd.service
Проверьте состояние:
systemctl status pcscd.socket pcscd.service
Теперь проверьте смарт-карту:
pcsc_scan
Или одноразово:
pcsc_scan -n
Нормально, если есть примерно такие строки:
Reader 0: Aktiv Co. Rutoken ...
Card state: Present
ATR: ...
Если pcsc_scan пишет:
No smart card readers found
значит, проблема на уровне драйвера Рутокен, pcsc-lite, USB или прав.
4. Установите драйвер Рутокен для PC/SC
Для Рутокенов часто нужен не только стандартный ccid, но и драйвер от производителя. В Arch/Manjaro он обычно ставится из AUR.
Найдите пакеты:
yay -Ss rutoken
yay -Ss ifd
или:
pamac search rutoken
pamac search ifd
Чаще всего нужен пакет вида:
ifd-rutoken
Для Рутокен ЭЦП могут также встречаться варианты:
ifd-rutoken-ecp
rutoken-ifd-driver
Установка через yay:
yay -S ifd-rutoken
или через pamac:
pamac build ifd-rutoken
Если есть отдельный пакет для ЭЦП и ваш токен определяется как Рутокен ЭЦП, можно поставить и его, например:
yay -S ifd-rutoken-ecp
После установки перезапустите PC/SC:
sudo systemctl restart pcscd.socket pcscd.service
Переподключите токен и снова проверьте:
pcsc_scan
5. Проверьте, что драйвер Рутокен установлен правильно
Драйвер должен находиться в каталоге драйверов PC/SC.
Проверьте:
find /usr/lib/pcsc/drivers /usr/lib64/pcsc/drivers -maxdepth 2 -iname '*rutoken*' 2>/dev/null
Пример нормального пути:
/usr/lib/pcsc/drivers/ifd-rutoken.bundle
Если драйвер установлен, например, в /usr/lib64/pcsc/drivers, а pcscd смотрит в /usr/lib/pcsc/drivers, можно сделать символическую ссылку:
sudo mkdir -p /usr/lib/pcsc/drivers
sudo ln -s /usr/lib64/pcsc/drivers/ifd-rutoken.bundle /usr/lib/pcsc/drivers/
sudo systemctl restart pcscd.socket pcscd.service
Также полезно смотреть журнал pcscd:
sudo journalctl -u pcscd -f
Затем подключите токен. Если есть ошибки загрузки драйвера, они обычно видны здесь.
Типичные проблемы в журнале:
- не может загрузить
ifd-rutoken; - отсутствует зависимость библиотеки;
- неверные права на файл драйвера;
- драйвер собран под другую версию
pcsc-lite.
Для диагностики можно запустить pcscd в foreground:
sudo systemctl stop pcscd.socket pcscd.service
sudo pcscd -f -a
Затем подключите токен в другом терминале или посмотрите вывод в текущем. Для выхода нажмите Ctrl+C.
После этого верните обычный режим:
sudo systemctl start pcscd.socket pcscd.service
6. Проверьте права пользователя
Если sudo pcsc_scan работает, а без sudo нет, проблема в правах доступа к сокету pcscd.
Проверьте группы:
getent group | grep -Ei 'pcsc'
Обычно группа называется pcsc или pcscd.
Добавьте пользователя:
for g in pcsc pcscd; do
if getent group "$g" >/dev/null; then
sudo usermod -aG "$g" "$USER"
fi
done
После этого нужно выйти из сессии и зайти заново, а лучше перезагрузиться.
Проверьте группу после входа:
groups
Проверьте без sudo:
pcsc_scan -n
7. Установите или проверьте КриптоПро CSP
Важно:
В Manjaro КриптоПро обычно ставят либо из AUR, либо вручную из официального дистрибутива КриптоПро. На Arch-системах удобнее использовать AUR-пакеты, потому что они учитывают зависимости.
Найдите пакеты:
pamac search cprocsp
pamac search cryptopro
или:
yay -Ss cprocsp
yay -Ss cryptopro
Типично нужны компоненты:
cprocsp-csp # базовый КриптоПро CSP
cprocsp-rdr-pcsc # поддержка PC/SC-ридеров
cprocsp-rdr-gost # поддержка ГОСТ-криптографии
cprocsp-rdr-rutoken # опционально, если есть в вашем комплекте/репозитории
Названия могут немного отличаться в разных AUR-пакетах. Могут быть варианты cryptopro-*, cprocsp-*, с суффиксами -64 и т.п.
Пример установки, если пакеты существуют:
yay -S cprocsp-csp cprocsp-rdr-pcsc cprocsp-rdr-gost
Если есть пакет cprocsp-rdr-rutoken, можно поставить и его:
yay -S cprocsp-rdr-rutoken
Если вы используете официальный установщик КриптоПро, убедитесь, что установлены не только базовые пакеты, но и компоненты чтения смарт-карт/Рутокен.
8. Проверьте, видит ли КриптоПро контейнер
Обычно утилита csptest находится здесь:
/opt/cprocsp/sbin/amd64/csptest
Но путь может отличаться.
Найдите её:
find /opt/cprocsp -type f -name csptest 2>/dev/null
Дальше используйте найденный путь.
Например:
/opt/cprocsp/sbin/amd64/csptest -enum -enum_cont -verifyc -fqcn
Если запросит PIN-код токена — введите.
Если с -verifyc контейнеры не отображаются, попробуйте без проверки:
/opt/cprocsp/sbin/amd64/csptest -enum -enum_cont -fqcn
Можно также выполнить от root только для диагностики:
sudo /opt/cprocsp/sbin/amd64/csptest -enum -enum_cont -verifyc -fqcn
Если от root контейнер виден, а от обычного пользователя нет — возвращайтесь к правам pcsc.
Посмотреть установленные сертификаты:
/opt/cprocsp/bin/amd64/certmgr -list
Если certmgr не находится:
find /opt/cprocsp -type f -name certmgr 2>/dev/null
9. Если pcsc_scan видит токен, а КриптоПро не видит контейнер
Это самая частая ситуация. Проверьте по порядку.
9.1. Установлены ли пакеты КриптоПро для смарт-карт
Обязательно должны быть компоненты, связанные с:
pcsc
gost
rutoken — если есть
Проверьте установленные пакеты:
pacman -Q | grep -Ei 'cprocsp|cryptopro'
Если среди них нет rdr-pcsc, КриптоПро может не видеть смарт-карты.
9.2. Версии КриптоПро и драйвера совместимы
Manjaro — rolling-release. После обновления системы может обновиться pcsc-lite, а AUR-драйвер Рутокен или компонент КриптоПро может потребовать пересборки/переустановки.
Переустановите/пересоберите драйвер Рутокен:
pamac build --no-cache ifd-rutoken
или через yay, если пакет из AUR:
yay -S ifd-rutoken
Затем:
sudo systemctl restart pcscd.socket pcscd.service
Если обновлялся КриптоПро, переустановите компоненты cprocsp-rdr-pcsc и, при наличии, cprocsp-rdr-rutoken.
9.3. Токен пустой или контейнер не создан
Рутокен может быть виден как смарт-карта, но не содержать контейнера КриптоПро.
Признаки:
- токен новый;
- токен форматировали;
- контейнер был удалён;
- токен использовался только для PKCS#11/OpenSSL, не для КриптоПро;
- контейнер был создан на другой системе и не был корректно записан.
Проверьте токен на другом компьютере с Windows и КриптоПро, если есть возможность. Если там контейнер виден, значит проблема в настройке Linux. Если и там нет — контейнера может не быть.
9.4. Контейнер есть, но нет сертификата
Иногда контейнер виден, но сертификат в хранилище не установлен.
Проверьте:
/opt/cprocsp/bin/amd64/certmgr -list
Если контейнер есть, а сертификата нет, можно установить сертификат в контейнер через certmgr.
Синтаксис зависит от вашей задачи, сначала посмотрите справку:
/opt/cprocsp/bin/amd64/certmgr -inst --help
Общая идея:
/opt/cprocsp/bin/amd64/certmgr -inst -file /path/to/certificate.cer -cont 'ПОЛНОЕ_ИМЯ_КОНТЕЙНЕРА'
Полное имя контейнера берите из вывода:
/opt/cprocsp/sbin/amd64/csptest -enum -enum_cont -fqcn
Если имя содержит пробелы и обратные слэши, обязательно заключайте его в одинарные кавычки.
9.5. Токен в неправильном режиме
Некоторые Рутокены могут работать в разных режимах. Если утилита Рутокен показывает, что устройство находится в режиме накопителя, PKCS#11 или нестандартном режиме, верните режим, предназначенный для ЭЦП/КриптоПро. Для этого лучше использовать официальную утилиту Рутокен для управления токенами.
10. Если КриптоПро не видит вообще читатель, а не только контейнер
Если pcsc_scan видит устройство, а КриптоПро не видит даже читатель, проверяйте:
10.1. Установлен ли cprocsp-rdr-pcsc
Без него КриптоПро не работает с PC/SC.
Проверьте:
pacman -Q | grep -Ei 'cprocsp.*pcsc'
Если пакета нет, установите соответствующий AUR-пакет или компонент из дистрибутива КриптоПро.
10.2. Нет ли нескольких версий КриптоПро
Проверьте:
ls -l /opt/cprocsp
pacman -Q | grep -Ei 'cprocsp|cryptopro'
Если ставили КриптоПро вручную, потом из AUR, потом снова вручную, возможны конфликты. Лучше оставить одну установку.
10.3. Не сломаны зависимости после обновления
На Manjaro после обновлений иногда нужно пересобрать AUR-пакеты.
Например:
pamac build --no-cache ifd-rutoken
Если есть AUR-пакеты КриптоПро, их тоже желательно пересобрать после крупных обновлений.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.