RedHat 5.6 и рутокен

Здравствуйте !

Подскажите пожалуйста, в чём может быть дело.

Имеется

RedHat Linux

( далее жирным шрифтом выделена команда, курсивом ответ системы, многоточие означает пропущенную часть вывода)

# uname -a
Linux setebos 2.6.32-100.26.2.el5 #1 SMP Tue Jan 18 20:11:49 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.6 (Tikanga)

Устройство установлено :

# lsusb
Bus 008 Device 003: ID 0a89:0020

# cat /proc/bus/usb/devices

T:  Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0a89 ProdID=0020 Rev= 2.00
S:  Manufacturer=Aktiv Co.
S:  Product=Rutoken S
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 56mA
I:* If#= 0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbfs


Установлен из репозитория pcsc-lite

pcsc-lite -1.4.4-4.el5_5
pcsc-lite-devel-1.4.4-4.el5_5
pcsc-lite-libs-1.4.4-4.el5_5

Собран из исходников openct (собирался с ключами --enable-pcsc --enable-usb)

# openct-tool  -v
OpenCT 0.6.17

OpenCT видит устройство

# openct-tool  list
  0 Rutoken S driver

Собран из исходников opensc (собирался с ключами  --enable-pcsc --enable-openct --enable-openssl)


# opensc-tool  -i
opensc 0.11.13 [gcc  4.1.2 20080704 (Red Hat 4.1.2-50)]
Enabled features: zlib iconv openssl openct pcsc(/usr/lib/libpcsclite.so.1)
winscard_clnt.c:477:SCardEstablishContextTH() Your pcscd is too old and does not support CMD_VERSION
[opensc-tool] reader-pcsc.c:906:pcsc_detect_readers: SCardEstablishContext failed: 0x80100013
[opensc-tool] reader-pcsc.c:1015:pcsc_detect_readers: returning with: Unknown error

Строка с warning-ом (winscard_clnt.c:…) выделяется на консоли красным цветом и выводится при любом обращении к утилитам opensc

OpenSC  обнаруживает устройство :
# opensc-tool  -l
winscard_clnt.c:477:SCardEstablishContextTH() Your pcscd is too old and does not support CMD_VERSION
[opensc-tool] reader-pcsc.c:906:pcsc_detect_readers: SCardEstablishContext failed: 0x80100013
[opensc-tool] reader-pcsc.c:1015:pcsc_detect_readers: returning with: Unknown error
Readers known about:
Nr.    Driver     Name
0      openct     Rutoken S driver
1      openct     OpenCT reader (detached)

Opensc-explorer отказывается открывать устройство

# opensc-explorer
OpenSC Explorer version 0.11.13
winscard_clnt.c:477:SCardEstablishContextTH() Your pcscd is too old and does not support CMD_VERSION
[opensc-explorer] reader-pcsc.c:906:pcsc_detect_readers: SCardEstablishContext failed: 0x80100013
[opensc-explorer] reader-pcsc.c:1015:pcsc_detect_readers: returning with: Unknown error
Using reader with a card: Rutoken S driver
[opensc-explorer] card-rutoken.c:227:rutoken_check_sw: File (DO) not found
[opensc-explorer] card-rutoken.c:440:rutoken_select_file: : File not found
[opensc-explorer] card.c:554:sc_select_file: returning with: File not found
unable to select MF: File not found

Включаем журнал и пробуем снять дамп с устройства

# pkcs15-tool --reader 0 -D
[pkcs15-tool] reader-pcsc.c:906:pcsc_detect_readers: SCardEstablishContext failed: 0x8010001d
[pkcs15-tool] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found
[pkcs15-tool] pkcs15.c:799:sc_pkcs15_bind: returning with: Unsupported card


[pkcs15-tool] card-rutoken.c:120:rutoken_match_card: called
[pkcs15-tool] card.c:746:match_atr_table: ATR     : 3b:6f:00:ff:00:56:72:75:54:6f:6b:6e:73:30:20:00:00:90:00
[pkcs15-tool] card.c:758:match_atr_table: ATR try : 3b:6f:00:ff:00:56:72:75:54:6f:6b:6e:73:30:20:00:00:90:00
[pkcs15-tool] card-rutoken.c:123:rutoken_match_card: ATR recognized as Rutoken
[pkcs15-tool] card-rutoken.c:124:rutoken_match_card: returning with: 1
[pkcs15-tool] card.c:196:sc_connect_card: matched: Rutoken driver
[pkcs15-tool] card-rutoken.c:155:rutoken_init: called
[pkcs15-tool] card.c:746:match_atr_table: ATR     : 3b:6f:00:ff:00:56:72:75:54:6f:6b:6e:73:30:20:00:00:90:00
[pkcs15-tool] card.c:758:match_atr_table: ATR try : 3b:6f:00:ff:00:56:75:61:54:6f:6b:6e:73:30:20:00:00:90:00
[pkcs15-tool] card-rutoken.c:133:token_init: called
[pkcs15-tool] card-rutoken.c:148:token_init: returning with: 0
[pkcs15-tool] card-rutoken.c:161:rutoken_init: returning with: 0
[pkcs15-tool] card.c:221:sc_connect_card: card info: Rutoken S card, 0, 0x0
[pkcs15-tool] card.c:222:sc_connect_card: returning with: 0
[pkcs15-tool] card.c:285:sc_lock: called
[pkcs15-tool] reader-openct.c:410:openct_reader_lock: called
[pkcs15-tool] pkcs15.c:700:sc_pkcs15_bind: called
[pkcs15-tool] card.c:285:sc_lock: called
[pkcs15-tool] pkcs15.c:526:sc_pkcs15_bind_internal: trying normal pkcs15 processing
[pkcs15-tool] card.c:532:sc_select_file: called; type=2, path=3f002f00
[pkcs15-tool] card-rutoken.c:391:rutoken_select_file: called
[pkcs15-tool] apdu.c:516:sc_transmit_apdu: called
[pkcs15-tool] card.c:285:sc_lock: called
[pkcs15-tool] apdu.c:184:sc_apdu_log:
Outgoing APDU data [    8 bytes] =====================================
00 A4 08 00 02 00 2F 00 ....../.
======================================================================
[pkcs15-tool] apdu.c:184:sc_apdu_log:
Incoming APDU data [    2 bytes] =====================================
6A 82 j.
======================================================================
[pkcs15-tool] card.c:312:sc_unlock: called
[pkcs15-tool] card-rutoken.c:227:rutoken_check_sw: File (DO) not found
[pkcs15-tool] card-rutoken.c:228:rutoken_check_sw: sw1 = 6a, sw2 = 82
[pkcs15-tool] card-rutoken.c:440:rutoken_select_file: : File not found
[pkcs15-tool] card.c:554:sc_select_file: returning with: -1201
[pkcs15-tool] card.c:532:sc_select_file: called; type=2, path=3f005015
[pkcs15-tool] card-rutoken.c:391:rutoken_select_file: called
[pkcs15-tool] apdu.c:516:sc_transmit_apdu: called
[pkcs15-tool] card.c:285:sc_lock: called
[pkcs15-tool] apdu.c:184:sc_apdu_log:
Outgoing APDU data [    8 bytes] =====================================
00 A4 08 00 02 15 50 00 ......P.
======================================================================
[pkcs15-tool] apdu.c:184:sc_apdu_log:
Incoming APDU data [    2 bytes] =====================================
6A 82 j.
======================================================================
[pkcs15-tool] card.c:312:sc_unlock: called
[pkcs15-tool] card-rutoken.c:227:rutoken_check_sw: File (DO) not found
[pkcs15-tool] card-rutoken.c:228:rutoken_check_sw: sw1 = 6a, sw2 = 82
[pkcs15-tool] card-rutoken.c:437:rutoken_select_file: returning with: -1201
[pkcs15-tool] card.c:554:sc_select_file: returning with: -1201
[pkcs15-tool] card.c:532:sc_select_file: called; type=2, path=3f005031
[pkcs15-tool] card-rutoken.c:391:rutoken_select_file: called
[pkcs15-tool] apdu.c:516:sc_transmit_apdu: called
[pkcs15-tool] card.c:285:sc_lock: called
[pkcs15-tool] apdu.c:184:sc_apdu_log:
Outgoing APDU data [    8 bytes] =====================================
00 A4 08 00 02 31 50 00 .....1P.
======================================================================
[pkcs15-tool] apdu.c:184:sc_apdu_log:
Incoming APDU data [    2 bytes] =====================================
6A 82 j.
======================================================================
[pkcs15-tool] card.c:312:sc_unlock: called
[pkcs15-tool] card-rutoken.c:227:rutoken_check_sw: File (DO) not found
[pkcs15-tool] card-rutoken.c:228:rutoken_check_sw: sw1 = 6a, sw2 = 82
[pkcs15-tool] card-rutoken.c:440:rutoken_select_file: : File not found
[pkcs15-tool] card.c:554:sc_select_file: returning with: -1201
[pkcs15-tool] pkcs15.c:593:sc_pkcs15_bind_internal: EF(ODF) not found in '3f005031'
[pkcs15-tool] pkcs15-syn.c:107:sc_pkcs15_bind_synthetic: called
[pkcs15-tool] pkcs15-syn.c:148:sc_pkcs15_bind_synthetic: no emulator list in config file, trying all builtin emulators
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying westcos
[pkcs15-tool] p15emu-westcos.c:244:sc_pkcs15emu_westcos_init_ex: sc_pkcs15_init_func_ex westcos
[pkcs15-tool] p15emu-westcos.c:231:westcos_detect_card: westcos_detect_card (Rutoken S card)
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying openpgp
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying infocamere
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying starcert
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying tcos
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying esteid
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying postecert
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying PIV-II
[pkcs15-tool] pkcs15-piv.c:521:sc_pkcs15emu_piv_init_ex: called
[pkcs15-tool] pkcs15-piv.c:100:piv_detect_card: called
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying gemsafeGPK
[pkcs15-tool] pkcs15-gemsafeGPK.c:515:sc_pkcs15emu_gemsafeGPK_init_ex: Entering sc_pkcs15emu_gemsafeGPK_init_ex
[pkcs15-tool] pkcs15-gemsafeGPK.c:163:gemsafe_detect_card: called
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying gemsafeV1
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying actalis
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying atrust-acos
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying tccardos
[pkcs15-tool] pkcs15-syn.c:150:sc_pkcs15_bind_synthetic: trying entersafe
[pkcs15-tool] pkcs15-esinit.c:77:sc_pkcs15emu_entersafe_init_ex: called
[pkcs15-tool] pkcs15-esinit.c:33:entersafe_detect_card: called
[pkcs15-tool] pkcs15-syn.c:159:sc_pkcs15_bind_synthetic: searching for 'emulate foo { ... }' blocks
[pkcs15-tool] card.c:312:sc_unlock: called
[pkcs15-tool] card.c:312:sc_unlock: called
[pkcs15-tool] reader-openct.c:437:openct_reader_unlock: called
[pkcs15-tool] card.c:236:sc_disconnect_card: called
[pkcs15-tool] card-rutoken.c:112:rutoken_finish: called
[pkcs15-tool] card-rutoken.c:115:rutoken_finish: returning with: 0
[pkcs15-tool] reader-openct.c:265:openct_reader_disconnect: called
[pkcs15-tool] card.c:251:sc_disconnect_card: returning with: 0
[pkcs15-tool] ctx.c:765:sc_release_context: called
[pkcs15-tool] reader-openct.c:168:openct_reader_release: called
[pkcs15-tool] reader-openct.c:168:openct_reader_release: called
[pkcs15-tool] reader-openct.c:154:openct_reader_finish: called

Подскажите пожалуйста в чём может быть дело ? Рутокен не инициализирован ? Инициализирован в Windows и поэтому недоступен ?

Большое спасибо !

Re: RedHat 5.6 и рутокен

Здравствуйте,

да, для того чтобы работал pkcs15-tool нужно чтобы Рутокен был отформатирован через pkcs15-init

Re: RedHat 5.6 и рутокен

Большое спасибо !

Дело в том, что этот рутокен форматируется не нами.
Его форматирование и запись сертификата проводилось в Windows XP при помощи КриптоПРО CSP 2.0 (сборка 2.012104).

Скажите пожалуйста, существует ли возможность считать сертификат с рутокена форматированного и заполненного на такой платформе (Windows XP + Крипто ПРО CSP 2.0) или обязательно использовать linux ?

Может быть можно поднять версию Крипто Про CSP?

Может быть есть ещё какие-нибудь варианты (т.к. отказаться от создания сертификата на  Windows XP малореально)?

Re: RedHat 5.6 и рутокен

Да.

Контейнер записанный на Рутокен посредством КриптоПро CSP, может быть прочитан только самим КриптоПро CSP или его версией для linux. Других вариантов нет.

Re: RedHat 5.6 и рутокен

Большое спасибо за ответ.

Я правильно понимаю, что на Windows (если я хочу использовать эту ОС для записи сертификата на  RuToken), мне придётся установить openct и opensc, воспользоваться (на Windows) утилитой pkcs15-tool   для форматирования устройства, создания контейнера и записи сертификата,  и  только в этом случае удастся открыть контейнер на Linux ?

Re: RedHat 5.6 и рутокен

AndrewKhitrin пишет:

Большое спасибо за ответ.

Я правильно понимаю, что на Windows (если я хочу использовать эту ОС для записи сертификата на  RuToken), мне придётся установить openct и opensc, воспользоваться (на Windows) утилитой pkcs15-tool   для форматирования устройства, создания контейнера и записи сертификата,  и  только в этом случае удастся открыть контейнер на Linux ?

Здравствуйте!

Здесь надо понять, какая именно стоит задача.
Если стоит задача использовать КриптоПро (и их контейнеры для хранения ключевой информации и сертификатов), то решается она только при помощи КриптоПро. Существует версия КриптоПро для Linux, но модули поддержки Рутокен находятся сейчас в состоянии разработки.

Если просто стоит задача отформатировать токен и уничтожить информацию на нем, его можно отформатировать под Windows, используя Панель управления (Апплет "Панель управления Рутокен"). Затем его можно инициализировать любым нужным способом.

Если сможете описать задачу несколько более широко и подробно, мы постараемся помочь с ее решением более правильным способом.

(2011-10-28 11:12:53 отредактировано AndrewKhitrin)

Re: RedHat 5.6 и рутокен

Добрый день !

Спасибо за помощь и поддержку.

Постараюсь более точно сформулировать свой вопрос , итак,

Какое программное обеспечение должно быть установлено на рабочей станции  под управлением Windows, для того что бы было возможно отформатировать Рутокен и поместить на него сертификат, после чего перенести Рутокен на Linux, причём на Linux-e Рутокен планируется использовать из под Крипто ПРО JCP.

Насколько я понял, созданный при помощи CSP рутокен можно использовать ТОЛЬКО из CSP. Как быть в случае JCP ? Необходимо на Windows разворачивать Крипто ПРО JCP устанавливать необходимые модули (openct, opensc) после чего устройство можно использовать в Linux, так ?

Re: RedHat 5.6 и рутокен

Добрый день.

Прошу прощения за длительную задержку в ответе.
Контейнеры КриптоПро CSP совместимы с КриптоПро JCP.
http://www.cryptopro.ru/products/csp/jcp

Реализация КриптоПро JCP совместима с КриптоПро CSP.