(2013-08-21 15:00:47 отредактировано oko)

Linux+Rutoken+RDP+SecretNet7

Добрый день!
Очень хочется узнать, возможен ли такой вариант использования Rutoken S:
- Сервер под управлением Windows 2008 R2 x64
- Клиент под управлением debian_6.0.7_x86
- Ключи Rutoken S (Aktiv Rutoken S 00 00)
- СЗИ SecretNet 7 + терминальные лицензии + доступ в систему только по идентификатору
- RDP-клиенты на клиентских машинах пробовал следующие: rdesktop_1.6, rdesktop_1.7 и 2xclient_10.5

Поясню проблему: в случае использования на клиенте любой ОС Windows + пакет драйверов Rutoken, SN7 на сервере корректно определяет предъявленный пользователем ключ Rutoken S, подключенный к клиентской машине, через RDP-сессию.
При использовании означенной выше ОС Linux на клиенте + rdesktop_1.6 (пробовал и 1.7) или 2xclient - SN7 на сервере не получает информацию о предъявленном на клиенте идентификаторе Rutoken S и, следовательно, блокирует доступ в систему.
Политика использования смарт-карт на сервере отключена. По-идее процесс передачи управляющих команд от сервера к клиенту (и обратно) через rdp-сессию должен быть одинаковым и для Windows, и для Linux. Но почему-то идентификатор "не пробрасывается".

Дополнительно:
# openct_tool list корректно определяет Rutoken S на клиенте
# pcsc_scan находит подключение Aktiv Rutoken S 00 00 к клиенту
Конфигурировал rdesktop по следующим мануалам:
http://www.lcnsoft.ru/the-community/26- … -card.html
https://forum.rutoken.ru/topic/1666/

ЗЫ Извиняюсь, если вопрос не по адресу (по-идее стоит "пинать" и техническую поддержку КодаБезопасности), просто факт в том, что под ОС Windows работа корректна. Следовательно, либо мною криво настроена поддержка Rutoken S в Debian, либо... теряюсь в догадках :)

Re: Linux+Rutoken+RDP+SecretNet7

Если Рутокен S определяется в pcsc_scan то значит проблема не в Рутокене, а скорее всего где-то в rdesktop.
Правильно собранный rdesktop должен подхватывать токен автоматически.

(2013-08-21 16:07:28 отредактировано oko)

Re: Linux+Rutoken+RDP+SecretNet7

Перепроверил настройки rdesktop - Вы правы:
user@arm:~/rdesktop-1.7.1$ rdesktop 192.168.0.100 -u user -p 12345678 -r scard:"Aktiv Rutoken S 00 00"="Aktiv Co. Rutoken S"
WARNING: Not compiled with smartcard support

Что я делаю не так? Собираю rdesktop следующим образом:
user@arm:~/rdesktop-1.7.1$ ./configure  --exec-prefix=/usr --with-libpcsclite-dev --enable-smartcard
Конфигурирование проходит без проблем. make и make install - тоже. Тем не менее, выписывать "WARNING: Not compiled with smartcard support"

Появилась еще одна мысль. lsusb не показывает никаких данных по Rutoken, подключенному к клиенту:
user@arm1:~/rdesktop-1.7.1$ lsusb
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 002 Device 003: ID 04f3:0103 Elan Microelectronics Corp.
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 013: ID 0a89:0020 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Возможно поэтому SN7 не видит идентификатор? Может тут проблема в "пробросе" usb-устройства как такового?

Re: Linux+Rutoken+RDP+SecretNet7

вы скорее всего собираете один rdesktop, а используете другой

Re: Linux+Rutoken+RDP+SecretNet7

Большое спасибо! Ваши ответы направили меня на путь истинный :))
Долго мучался с rdesktop, который никак не хотел компилироваться с поддержкой смарт-карт. Перепробовал различные версии Debian, установил Ubuntu 12.10 LTS с надеждой, что там в репозиториях rdesktop уже имеется полновесный. В итоге оказалось, что версия rdesktop уже собранная с smart-card присутствует в большинстве rpm-дистрибутивов, но в deb-дистрибутивах таковой нет.
Понимаю, что моя проблема была в несоответствии версий используемых pcscd, libpcsclite и (что важно) libpcsclite-dev с компилируемой вручную версией rdesktop.
Тем не менее, в ходе поисков наткнулся на следующий топик: http://forum.ubuntu.ru/index.php?topic=171549.0 (огромное спасибо пользователю john2001). В теме присутствует готовый deb-пакет rdesktop_1.7.0_i386, собранный как надо. Инсталлировал драйвер Rutoken S в deb-формате - проброс смарт-карт заработал!
Впрочем, проблему это не решило - SecretNet по-прежнему отказывается нормально "видеть" Rutoken из Linux-клиента (вернее отказывается его инициализировать через rdp-подключение, ссылаясь на неизвестную "ошибку окончания транзакции"). В свою очередь драйвер и ПО Rutoken S, установленные на сервере, прекрасно Рутокен определяют в rdp-сессии. Буду ковырять SN7 дальше (техническая поддержка Кода Безопасности говорит, что ситуация нетипичная, поэтому следует писать им письма, а к чему это приводит, увы, горький опыт научил...). Если это интересно, когда получу положительный результат - могу выложить порядок настройки и подключения.

ЗЫ Тему, думаю, можно закрывать. Однако просьба оставить приведенную ссылку (или готовый пакет rdesktop) - вдруг кому-либо еще пригодится? :)

Re: Linux+Rutoken+RDP+SecretNet7

Доброго времени суток!
При попытке инициализации Rutoken в SecretNet7 в режиме удаленного рабочего стола происходит мигание токена несколько секунд, а затем выскакивает сообщение "Сделана попытка окончания несуществующей транзакции". Токен вплоть до завершения сеанса доступа по RDP более не обнаруживается средствами SecretNet.
Впрочем, дело не в этом. Если предварительно открыть на удаленной Win-машине панель управления Rutoken, затем совершить означенные выше действия с SN7, и, после, попытаться залогиниться на токен средствами панели управления - выскакивает то же самое сообщение "Сделана попытка...", но на сей раз с кодом ошибки "0x80100016"
На форуме нашел единственную подходящую ветку с похожими сообщениями -
https://forum.rutoken.ru/topic/1639/
Как я понимаю, на моей Linux-машине проблемы с libusb? Однако дело в том, что я проверил эту ситуацию в Lubuntu_12.10-LTS_x86 и в Fedora_18_lxde_x86. Оба раз результат одинаковый.
На данный момент тестирую на Fedora-18_x86.

Прикладываю вывод "pcsc -df" (конец лога):

00000096 winscard_svc.c:733:MSGSignalClient() Signal client: 15
00000004 winscard_svc.c:317:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 16
00000212 winscard_svc.c:736:MSGSignalClient() SIGNAL rv=0x0 for client 15
00000033 winscard_svc.c:317:ContextThread() Received command: CMD_GET_READERS_STATE from client 18
00000713 winscard_svc.c:317:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 18
00000352 winscard_svc.c:317:ContextThread() Received command: CMD_GET_READERS_STATE from client 15
00000875 winscard_svc.c:317:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 15
02730552 winscard_msg_srv.c:230:ProcessEventsServer() Common channel packet arrival
00000106 winscard_msg_srv.c:242:ProcessEventsServer() ProcessCommonChannelRequest detects: 10
00000040 pcscdaemon.c:93:SVCServiceRunLoop() A new context thread creation is requested: 10
00000196 winscard_svc.c:299:ContextThread() Thread is started: dwClientID=10, threadContext @0x944fe68
00000104 winscard_svc.c:317:ContextThread() Received command: CANCEL from client 10
00000078 winscard_svc.c:733:MSGSignalClient() Signal client: 16
00000053 winscard_svc.c:736:MSGSignalClient() SIGNAL rv=0x80100002 for client 16
00000162 winscard_svc.c:542:ContextThread() CANCEL rv=0x0 for client 10
00000683 winscard_msg_srv.c:230:ProcessEventsServer() Common channel packet arrival
00000105 winscard_msg_srv.c:242:ProcessEventsServer() ProcessCommonChannelRequest detects: 11
00000054 pcscdaemon.c:93:SVCServiceRunLoop() A new context thread creation is requested: 11
00000820 winscard_svc.c:309:ContextThread() Client die: 10
00000123 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=10, threadContext @0x944fe68
00000253 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x944fe68
00000127 winscard_svc.c:299:ContextThread() Thread is started: dwClientID=11, threadContext @0x9450610
00000097 winscard_svc.c:317:ContextThread() Received command: CANCEL from client 11
00000080 winscard_svc.c:733:MSGSignalClient() Signal client: 17
00000064 winscard_svc.c:736:MSGSignalClient() SIGNAL rv=0x80100002 for client 17
00000098 winscard_svc.c:542:ContextThread() CANCEL rv=0x0 for client 11
00000563 winscard_svc.c:309:ContextThread() Client die: 11
00000121 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=11, threadContext @0x9450610
00000056 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x9450610
00001147 winscard_svc.c:317:ContextThread() Received command: RELEASE_CONTEXT from client 17
00000089 winscard.c:204:SCardReleaseContext() Releasing Context: 0x59DE19F2
00000042 winscard_svc.c:425:ContextThread() RELEASE_CONTEXT rv=0x0 for client 17
00000159 winscard_svc.c:309:ContextThread() Client die: 17
00000100 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=17, threadContext @0x944ffa8
00000054 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x944ffa8
00971570 winscard_svc.c:309:ContextThread() Client die: 16
00000096 winscard.c:204:SCardReleaseContext() Releasing Context: 0x35B8F9AC
00000032 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=16, threadContext @0x9450368
00000028 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x9450368
00000328 winscard_svc.c:309:ContextThread() Client die: 22
00000119 winscard.c:204:SCardReleaseContext() Releasing Context: 0x6751276C
00000033 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=22, threadContext @0x94506a8
00000026 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x94506a8
00000324 winscard_svc.c:309:ContextThread() Client die: 12
00000064 winscard.c:204:SCardReleaseContext() Releasing Context: 0x48CF891B
00000029 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=12, threadContext @0x94507e8
00000027 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x94507e8
00000295 winscard_svc.c:309:ContextThread() Client die: 15
00000072 winscard.c:204:SCardReleaseContext() Releasing Context: 0xB5C356A
00000033 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=15, threadContext @0x94508c0
00000066 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x94508c0
00000304 winscard_svc.c:309:ContextThread() Client die: 18
00000072 winscard.c:204:SCardReleaseContext() Releasing Context: 0x4A57F2C9
00000032 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=18, threadContext @0x9451168
00000028 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x9451168
00000324 winscard_svc.c:309:ContextThread() Client die: 20
00000069 winscard.c:204:SCardReleaseContext() Releasing Context: 0x642203CA
00000035 readerfactory.c:766:RFReaderInfoById() RefReader() count was: 1
00000027 readerfactory.c:766:RFReaderInfoById() RefReader() count was: 2
00000028 winscard.c:851:SCardDisconnect() Active Contexts: 1
00000061 winscard.c:852:SCardDisconnect() dwDisposition: 0
00000030 winscard.c:1017:SCardDisconnect() powerState: POWER_STATE_GRACE_PERIOD
00000024 winscard.c:1044:SCardDisconnect() UnrefReader() count was: 3
00000027 winscard_svc.c:815:MSGRemoveContext() UnrefReader() count was: 2
00000027 winscard_svc.c:928:MSGCleanupClient() Thread is stopping: dwClientID=20, threadContext @0x9450228
00000026 winscard_svc.c:934:MSGCleanupClient() Freeing SCONTEXT @0x9450228
00324997 eventhandler.c:458:EHStatusHandlerThread() powerState: POWER_STATE_POWERED
00410774 eventhandler.c:446:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED

Не могли бы вы подсказать, в какую сторону теперь копать? Насколько я понимаю, дело может быть не только в libusb?

Re: Linux+Rutoken+RDP+SecretNet7

Добрый день.
Нет это непохоже на проблему с libusb.
Скорее всего дело в SecretNet, ведь если не использовать его - будет все работать, и панель управления и все остальное.

Re: Linux+Rutoken+RDP+SecretNet7

Добрый вечер!
Как я понимаю, SN7 работает с Rutoken S через драйвер rutoken, не используя собственных библиотек и драйверов. В свою очередь, если все прекрасно отрабатывает под связкой Win-Win, почему происходит проблема в Win-Lin? По-идее, варианта два: либо несогласование драйвера rutoken под Linux с, положим, демоном pcscd, либо с rdesktop.
Появился новый симптом: при работе в связке Debian7.0+freedesktop-x11 (собран вручную, последняя версия) те же манипуляции в SN7 выдают новую ошибку "Заглушке передан неверный параметр" (код ошибки Win32 - 0x6f7). Гугл не помог - обзоры ошибки в параметрах поиска в Word и Excel.
Можете объяснить, что означает APDU и SW в выводах pcsc? Просто значения SW при запуске pcscd в дебаг-моде (-afd) у меня резко различаются в момент инициализации Rutoken S на удаленной машине средствами SN7:

00000061 winscard_svc.c:389:ContextThread() CMD_STOP_WAITING_READER_STATE_CHANGE rv=0x0 for client 24
00000167 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 24
00000139 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 24
00001278 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 24
00000052 winscard_svc.c:315:ContextThread() Received command: TRANSMIT from client 25
00000045 winscard_svc.c:315:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 24
00000013 winscard.c:1507:SCardTransmit() Send Protocol: T=0
00000062 APDU: 00 A4 08 04 02 19 54 
00002031 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 9
00035699 SW: 62 3D 81 02 20 00 80 02 00 00 82 02 38 00 83 02 19 54 8A 01 05 86 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 
00000039 winscard_svc.c:604:ContextThread() TRANSMIT rv=0x0 for client 25
00001039 winscard_svc.c:315:ContextThread() Received command: TRANSMIT from client 25
00000050 winscard.c:1507:SCardTransmit() Send Protocol: T=0
00000017 APDU: 00 A4 08 04 02 19 54 
00037334 SW: 62 3D 81 02 20 00 80 02 00 00 82 02 38 00 83 02 19 54 8A 01 05 86 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 
00000039 winscard_svc.c:604:ContextThread() TRANSMIT rv=0x0 for client 25
00001023 winscard_svc.c:315:ContextThread() Received command: TRANSMIT from client 25
00000051 winscard.c:1507:SCardTransmit() Send Protocol: T=0
00000015 APDU: 00 A4 00 04 
00001008 SW: 
00000025 ifdwrapper.c:527:IFDTransmit() Card not transacted: 612
00000012 winscard.c:1532:SCardTransmit() Card not transacted: 0x80100016
00000011 winscard_svc.c:604:ContextThread() TRANSMIT rv=0x80100016 for client 25
00217867 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 19
00031043 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 21
00024855 winscard_svc.c:315:ContextThread() Received command: CMD_STOP_WAITING_READER_STATE_CHANGE from client 15

Re: Linux+Rutoken+RDP+SecretNet7

покажите, пожалуйста, что находится у Вас в директории /usr/lib/pcsc/drivers (usr/lib64/pcsc/drivers)

Re: Linux+Rutoken+RDP+SecretNet7

Добрый вечер!
Извиняюсь, что не ответил раньше - не было доступа ни к машине, ни к сети.

В /usb/lib/pcsc/drivers:

root@test:/usr/lib/pcsc/drivers# ls
ACR38UDriver.bundle   ifd-ccid.bundle  serial   ifd-acsccid.bundle   ifd-rutokens.bundle

Наличие ifd-rutokens.bundle проверял сразу после установки всех нужных утилит и драйверов в соответствии с вот этой темой: https://forum.rutoken.ru/topic/1666/

Система: Linux test 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
Пробовал удалять pcscd и компилировать openct вручную с поддержкой rutoken. Но на этой системе нормально не получилось.
Каталог /usr/lib64/pcsc/drivers отсутствует.

Re: Linux+Rutoken+RDP+SecretNet7

Здравствуйте.
Вижу что драйвер у Вас установлен, это хорошо, значит Вам не потребуется никакой openct, забудьте про него.

Судя по логу, Вы возможно наткнулись на ошибку в нашем драйвере:
Попробуйте запустить pcscd так:
export IFDLIB_ifdLogLevel=0xFF && pcscd -afd
пришлите пожалуйста вывод терминала
Посмотрим, что выводит наш драйвер

Re: Linux+Rutoken+RDP+SecretNet7

Добрый вечер!
Привожу лог pcscd демона, запущенного с указанными Вами параметрами:

Лог в момент запуска pcscd-демона с параметрами и подключением Rutoken S к Linux-терминалу:

root@test:/home/user# export IFDLIB_ifdLogLevel=0xFF && pcscd -afd
00000000 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000357 configfile.l:245:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d
00000073 configfile.l:298:DBGetReaderList() Parsing conf file: /etc/reader.conf.d/libccidtwin
00000128 configfile.l:257:DBGetReaderListDir() Skipping non regular file: ..
00000029 configfile.l:257:DBGetReaderListDir() Skipping non regular file: .
00000042 pcscdaemon.c:518:main() pcsc-lite 1.8.4 daemon ready.
00003576 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000257 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000244 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x046D, PID: 0xC05A, path: /dev/bus/usb/001/002
00000230 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000234 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x04F2, PID: 0xB2E1, path: /dev/bus/usb/001/003
00000228 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x04F2, PID: 0xB2E1, path: /dev/bus/usb/001/003
00000286 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0003, path: /dev/bus/usb/002/001
00000274 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/003/001
00000222 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/003/001
00000241 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/003/002
00000289 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/004/001
00000228 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/004/001
00000229 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/004/002
03378257 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x0A89, PID: 0x0020, path: /dev/bus/usb/003/004
00000037 hotplug_libudev.c:311:HPAddDevice() Adding USB device: Aktiv Co. Rutoken S
00000100 readerfactory.c:941:RFInitializeReader() Attempting startup of Aktiv Co. Rutoken S 00 00 using /usr/lib/pcsc/drivers/ifd-rutokens.bundle/Contents/Linux/libruto
00000333 readerfactory.c:831:RFBindFunctions() Loading IFD Handler 3.0
00000306 ifdhandler.c:701:init_driver() LogLevel from IFDLIB_ifdLogLevel: 0x00FF
00000013 ifdhandler.c:704:init_driver() Driver version: 1.0.1
00000010 ifdhandler.c:705:init_driver() LogLevel: 0x00FF
00000010 ifdhandler.c:67:IFDHCreateChannelByName() lun: 0, device: usb:0a89/0020:libudev:0:/dev/bus/usb/003/004
00000014 rutokens_usb.c:108:OpenUSBByName() Reader index: 0, Device: usb:0a89/0020:libudev:0:/dev/bus/usb/003/004
00162192 rutokens_usb.c:258:OpenUSBByName() Manufacturer: Aktiv Co
00000226 rutokens_usb.c:267:OpenUSBByName() ProductString: Rutoken S driver
00000189 rutokens_usb.c:273:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any l
00000495 rutokens_usb.c:329:OpenUSBByName() Checking device: 003/004
00000029 rutokens_usb.c:348:OpenUSBByName() Trying to open USB bus/device: 003/004
00000049 rutokens_usb.c:374:OpenUSBByName() Extra field for 003/004 has a wrong length: 2
00000076 rutokens_usb.c:384:OpenUSBByName() Found Vendor/Product: 0A89/0020 (Aktiv Co. Rutoken S)
00000033 rutokens_usb.c:385:OpenUSBByName() Using USB bus/device: 003/004
00000202 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000027 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000520 receive: 00 
00000049 ifdhandler.c:669:IFDHICCPresence() Card present
00000033 ifdhandler.c:255:IFDHGetCapabilities() lun: 0, tag: 0xFB3
00000029 readerfactory.c:294:RFAddReader() Using the pcscd polling thread
00000024 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000022 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000569 receive: 00 
00000051 ifdhandler.c:669:IFDHICCPresence() Card present
00000104 ifdhandler.c:255:IFDHGetCapabilities() lun: 0, tag: 0xFAE
00000053 ifdhandler.c:301:IFDHGetCapabilities() Reader supports 1 slot(s)
00000046 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000057 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000691 receive: 00 
00000051 ifdhandler.c:669:IFDHICCPresence() Card present
00000028 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000030 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000638 receive: 00 
00000050 ifdhandler.c:669:IFDHICCPresence() Card present
00000027 ifdhandler.c:450:IFDHPowerICC() lun: 0, action: PowerUp
00000025 rutokens_usb.c:510:ControlUSB() request: 0x63
00000029 send: 
00000346 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000647 receive: 10 
00000051 rutokens_usb.c:510:ControlUSB() request: 0x62
00001081 receive: 3B 6F 00 FF 00 56 72 75 54 6F 6B 6E 73 30 20 00 00 90 00 
00000054 eventhandler.c:256:EHStatusHandlerThread() powerState: POWER_STATE_POWERED
00000048 Card ATR: 3B 6F 00 FF 00 56 72 75 54 6F 6B 6E 73 30 20 00 00 90 00 
00000026 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000023 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000595 receive: 00 
00000050 ifdhandler.c:669:IFDHICCPresence() Card present
00400168 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000074 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000493 receive: 00 
00000052 ifdhandler.c:669:IFDHICCPresence() Card present
00000027 ifdhandler.c:450:IFDHPowerICC() lun: 0, action: PowerDown
00000050 rutokens_usb.c:510:ControlUSB() request: 0x63
00000020 send: 
00000438 eventhandler.c:446:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED
00000052 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000025 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000678 receive: 10 
00000051 ifdhandler.c:669:IFDHICCPresence() Card present
00400169 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000048 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000663 receive: 10 
00000033 ifdhandler.c:669:IFDHICCPresence() Card present
00400155 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000045 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000490 receive: 10 

Лог в момент инициализации Rutoken S на удаленной машине под Windows 2008 R2 средствами SecretNet7:

00000031 ifdhandler.c:669:IFDHICCPresence() Card present
00014930 winscard_svc.c:315:ContextThread() Received command: CMD_STOP_WAITING_READER_STATE_CHANGE from client 18
00000052 winscard_svc.c:389:ContextThread() CMD_STOP_WAITING_READER_STATE_CHANGE rv=0x0 for client 18
00000118 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 18
00001078 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 18
00000094 winscard_svc.c:315:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 18
00038700 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 9
00038700 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 6
00019454 winscard_svc.c:315:ContextThread() Received command: CMD_STOP_WAITING_READER_STATE_CHANGE from client 25
00000056 winscard_svc.c:389:ContextThread() CMD_STOP_WAITING_READER_STATE_CHANGE rv=0x0 for client 25
00000161 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 25
00000118 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 25
00001034 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 25
00000051 winscard_svc.c:315:ContextThread() Received command: TRANSMIT from client 26
00000040 winscard_svc.c:315:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 25
00000017 winscard.c:1507:SCardTransmit() Send Protocol: T=0
00000028 APDU: 00 A4 08 04 02 19 54 
00000014 ifdhandler.c:551:IFDHTransmitToICC() lun: 0
00000015 commands.c:353:CmdXfrBlock() buffer  00 a4 08 04 02 19 54; *rx_length = 258
00000011 commands.c:357:CmdXfrBlock() iso.le = 0
00000010 commands.c:258:CmdTranslateTxBuffer() le = 2
00000013 commands.c:543:CmdSendTPDU() send tpdu command  00 a4 08 04 02 54 19, len: 7
00000010 commands.c:521:CmdPrepareT0Hdr() case 3
00000010 rutokens_usb.c:510:ControlUSB() request: 0x65
00000010 send: 00 A4 08 04 02 
00000641 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000487 receive: 10 
00000032 commands.c:605:CmdSendTPDU() send Data 2
00000012 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000586 receive: 10 
00000033 commands.c:613:CmdSendTPDU() send TPDU Data  54 19
00000012 rutokens_usb.c:510:ControlUSB() request: 0x65
00000010 send: 54 19 
00000425 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000645 receive: 40 
00000032 commands.c:161:CmdGetSlotStatus() Busy: 0x40
00010097 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000629 receive: 41 
00010224 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000494 receive: 42 
00010176 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000609 receive: 20 
00000034 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000578 receive: 20 
00000032 commands.c:483:CmdReceiveSW() status = ICC_STATUS_READY_SW
00000013 rutokens_usb.c:510:ControlUSB() request: 0x6F
00000369 receive: 61 20 
00000014 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000574 receive: 00 
00000032 commands.c:488:CmdReceiveSW() Get SW 61 20
00000016 commands.c:543:CmdSendTPDU() send tpdu command  00 c0 00 00 20, len: 5
00000011 commands.c:510:CmdPrepareT0Hdr() case 2
00000009 rutokens_usb.c:510:ControlUSB() request: 0x65
00000011 send: 00 C0 00 00 20 
00000547 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000498 receive: 10 
00000032 commands.c:570:CmdSendTPDU() get Data 32
00000012 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000456 receive: 10 
00000032 rutokens_usb.c:510:ControlUSB() request: 0x6F
00001104 receive: 00 20 00 00 38 00 54 19 05 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00000034 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000419 receive: 20 
00000033 commands.c:582:CmdSendTPDU() get TPDU Anser  00 20 00 00 38 00 54 19 05 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000014 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000614 receive: 20 
00000032 commands.c:483:CmdReceiveSW() status = ICC_STATUS_READY_SW
00000013 rutokens_usb.c:510:ControlUSB() request: 0x6F
00000450 receive: 90 00 
00000032 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000598 receive: 00 
00000032 commands.c:488:CmdReceiveSW() Get SW 90 0
00000012 commands.c:668:CmdSendTPDU() recv 34 bytes
00000040 convert_apdu.c:257:convert_rtprot_to_fcp() fcp =  62 3d 81 02 20 00 80 02 00 00 82 02 38 00 83 02 19 54 8a 01 05 86 28 00 00 00 00 00 00 00 00 00 00 00 00 00 0
00000013 commands.c:283:CmdTranslateRxBuffer() convert_rtprot_to_fcp = 63
00000034 SW: 62 3D 81 02 20 00 80 02 00 00 82 02 38 00 83 02 19 54 8A 01 05 86 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 
00000015 winscard_svc.c:604:ContextThread() TRANSMIT rv=0x0 for client 26
00001299 winscard_svc.c:315:ContextThread() Received command: TRANSMIT from client 26
00000050 winscard.c:1507:SCardTransmit() Send Protocol: T=0
00000015 APDU: 00 A4 08 04 02 19 54 
00000011 ifdhandler.c:551:IFDHTransmitToICC() lun: 0
00000014 commands.c:353:CmdXfrBlock() buffer  00 a4 08 04 02 19 54; *rx_length = 258
00000010 commands.c:357:CmdXfrBlock() iso.le = 0
00000010 commands.c:258:CmdTranslateTxBuffer() le = 2
00000013 commands.c:543:CmdSendTPDU() send tpdu command  00 a4 08 04 02 54 19, len: 7
00000009 commands.c:521:CmdPrepareT0Hdr() case 3
00000010 rutokens_usb.c:510:ControlUSB() request: 0x65
00000010 send: 00 A4 08 04 02 
00000531 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000410 receive: 10 
00000058 commands.c:605:CmdSendTPDU() send Data 2
00000012 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000521 receive: 10 
00000033 commands.c:613:CmdSendTPDU() send TPDU Data  54 19
00000013 rutokens_usb.c:510:ControlUSB() request: 0x65
00000009 send: 54 19 
00000358 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000494 receive: 40 
00000013 commands.c:161:CmdGetSlotStatus() Busy: 0x40
00010135 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000407 receive: 41 
00000432 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 20
00009692 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000550 receive: 42 
00005568 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 22
00004547 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000604 receive: 20 
00000033 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000461 receive: 20 
00000033 commands.c:483:CmdReceiveSW() status = ICC_STATUS_READY_SW
00000012 rutokens_usb.c:510:ControlUSB() request: 0x6F
00000556 receive: 61 20 
00000032 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000425 receive: 00 
00000012 commands.c:488:CmdReceiveSW() Get SW 61 20
00000009 commands.c:543:CmdSendTPDU() send tpdu command  00 c0 00 00 20, len: 5
00000006 commands.c:510:CmdPrepareT0Hdr() case 2
00000006 rutokens_usb.c:510:ControlUSB() request: 0x65
00000005 send: 00 C0 00 00 20 
00000458 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000373 receive: 10 
00000009 commands.c:570:CmdSendTPDU() get Data 32
00000005 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000525 receive: 10 
00000020 rutokens_usb.c:510:ControlUSB() request: 0x6F
00001113 receive: 00 20 00 00 38 00 54 19 05 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00000021 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000354 receive: 20 
00000028 commands.c:582:CmdSendTPDU() get TPDU Anser  00 20 00 00 38 00 54 19 05 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000008 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000586 receive: 20 
00000021 commands.c:483:CmdReceiveSW() status = ICC_STATUS_READY_SW
00000007 rutokens_usb.c:510:ControlUSB() request: 0x6F
00000473 receive: 90 00 
00000019 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000480 receive: 00 
00000019 commands.c:488:CmdReceiveSW() Get SW 90 0
00000008 commands.c:668:CmdSendTPDU() recv 34 bytes
00000024 convert_apdu.c:257:convert_rtprot_to_fcp() fcp =  62 3d 81 02 20 00 80 02 00 00 82 02 38 00 83 02 19 54 8a 01 05 86 28 00 00 00 00 00 00 00 00 00 00 00 00 00 0
00000007 commands.c:283:CmdTranslateRxBuffer() convert_rtprot_to_fcp = 63
00000020 SW: 62 3D 81 02 20 00 80 02 00 00 82 02 38 00 83 02 19 54 8A 01 05 86 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 
00000009 winscard_svc.c:604:ContextThread() TRANSMIT rv=0x0 for client 26
00000871 winscard_svc.c:315:ContextThread() Received command: TRANSMIT from client 26
00000031 winscard.c:1507:SCardTransmit() Send Protocol: T=0
00000009 APDU: 00 A4 00 04 
00000007 ifdhandler.c:551:IFDHTransmitToICC() lun: 0
00000008 commands.c:353:CmdXfrBlock() buffer  00 a4 00 04; *rx_length = 258
00000006 commands.c:357:CmdXfrBlock() iso.le = 0
00000006 commands.c:543:CmdSendTPDU() send tpdu command  00 a4 00 04, len: 4
00000005 commands.c:505:CmdPrepareT0Hdr() case 1
00000005 rutokens_usb.c:510:ControlUSB() request: 0x65
00000006 send: 00 A4 00 04 00 
00000462 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000498 receive: 10 
00000019 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000356 receive: 10 
00000017 SW: 
00000008 ifdwrapper.c:527:IFDTransmit() Card not transacted: 612
00000007 winscard.c:1532:SCardTransmit() Card not transacted: 0x80100016
00000006 winscard_svc.c:604:ContextThread() TRANSMIT rv=0x80100016 for client 26
00237890 ifdhandler.c:619:IFDHICCPresence() lun: 0
00000049 rutokens_usb.c:510:ControlUSB() request: 0xA0
00000728 receive: 10 
00000033 ifdhandler.c:669:IFDHICCPresence() Card present
00116013 winscard_svc.c:315:ContextThread() Received command: CMD_STOP_WAITING_READER_STATE_CHANGE from client 18
00000059 winscard_svc.c:389:ContextThread() CMD_STOP_WAITING_READER_STATE_CHANGE rv=0x0 for client 18
00000157 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 18
00001554 winscard_svc.c:315:ContextThread() Received command: CMD_GET_READERS_STATE from client 18
00000184 winscard_svc.c:315:ContextThread() Received command: CMD_WAIT_READER_STATE_CHANGE from client 18

Re: Linux+Rutoken+RDP+SecretNet7

Здравствуйте! По вашей проблеме была произведена диагностика драйвера. Исправленная версия драйвера была отправлена вам по почте и, в случае, если проблема разрешена, будет опубликована.

Re: Linux+Rutoken+RDP+SecretNet7

Кирилл, Евгений, огромное спасибо! С новым драйвером под всеми тестируемыми дистрибутивами инициализация (и присвоение идентификатора) средствами SN7 на удаленном сервере прекрасно заработала!
Осталась, правда, проблема со входом в RDP-сессии при подключении идентификатора к linux-терминалу. Но здесь, по всей видимости, проблема Windows 2008 Server и rdesktop (freerdp) - токен пробрасывается "сразу", при подключении к удаленному рабочему столу, в то время как Win2008+SN7 позволяют "увидеть"  идентификатор, только если его выдернуть и воткнуть на терминальной машине заново. Со связкой Win-Win ситуация аналогичная, только remotedesktop позволяет "пробрасывать" токен в любой момент его подключения к терминалу. Rdesktop (freerdp), по всей видимости, только в момент первичного запуска, что не проходит. Буду ковырять rdesktop и пробовать Windows 2003 в качестве сервера терминалов.
Еще раз спасибо!

Re: Linux+Rutoken+RDP+SecretNet7

Извиняюсь, что поднимаю тему заново и с несколько другими вопросами, но это лучше, мне кажется, чем создавать новую тему...

Коротко: получилось реализовать связку Win2008R2+SecretNet7+LubuntuLTS12.10(как дистрибутив клиента).
Теперь встал вопрос о входе под учетную запись root на клиенте только по предъявлению Rutoken S.
Опирался вот на эти темы:
http://developer.rutoken.ru/pages/viewp … Id=3440696
http://habrahabr.ru/company/aktiv-company/blog/144700/
и вместо openct использовал драйвер ifd-rutoken, предоставленный вами ранее (чтобы позднее работал терминальный доступ).

Попутно выяснил, что используемый мной opensc_0.12 не подходит и нужны следующие пакеты (переустановил их):
libopensc2_0.11.13-1.1_amd64.deb
opensc_0.11.13-1.1_amd64.deb
Однако, при попытке провести манипуляцию "pkcs15-init --generate-key rsa/2048 --auth-id 02 --id 45" мне отказывают в доступе, ругаясь:
Error: can't open /var/run/openct/status: No such file or directory
[pkcs15-init] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found

Хотя при этом pcsc_scan опознает Rutoken S как надо, терминальный доступ работет, а вот opensc-tool -l выдает, что OpenCT reader (detached)

Возник вопрос: возможно ли устроить pam-аутентификацию с использование Rutoken S, но при отсутствии openct?