Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте! Высылаю ссылку на вывод команды ./configure http://letitbit.net/download/75195.7566 … t.txt.html

Надеюсь, что листинг будет информативнее, чем мои комментарии :). Заранее спасибо. жду ответа.

Re: Как правильно устанавливать RuToken в Linux?

Да. Судя по присланному Вами файлу, openct должен собираться корректно.

Re: Как правильно устанавливать RuToken в Linux?

Кирилл Мещеряков пишет:

Да. Судя по присланному Вами файлу, openct должен собираться корректно.

Это хорошо.. Но дальше что делать? По инструкции-то собрать не могу, получается? В сообщении http://forum.rutoken.ru/post/2644/#p2644 уже писал об этом: невозможно создать символьные ссылки для инициализации пакета. Что же не так тогда? Можете ли подсказать? Заранее спасибо. Дмитрий.

Re: Как правильно устанавливать RuToken в Linux?

не создавайте пока эти ссылки, они отвечают за запуск сервиса при загрузке компьютера и остановку при выключении
я не эксперт по OpenSUSE Linux, возможно, этих каталогов действительно нет, обратитесь к сообществу разработчиков OpenSUSE
попробуйте пока запускать вручную
если права на выполнение скрипта были выданы (#chmod +x /etc/init.d/openct ), вот это должно сработать:
#service openct start

проверить, корректно ли определяется токен, можно командой opentct-tool list

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте! В общем, наконец-то что-то получилось. После долгой возни и попытки запустить сервис openct выяснилось, что появляется ошибка об отсутствии папки '\usr\var\run\openct'. Такой папки действительно нет, а есть '\var\run\openct'. После редактирования файла конфигурации '\etc\init.d\openct', сервис запустился успешно. Проверяем токен:

# openct-tool list
  0 Rutoken S driver

Вот то, что требовалось. Теперь бы научить систему автоматически запускать сервис, а также определять подключение токена. Кроме того, еще не компилировал opensc.. Заранее спасибо. Дмитрий.

Re: Как правильно устанавливать RuToken в Linux?

Разработчики opensc-project.org ориентируются прежде всего на debian/ubuntu. В OpenSUSE, к сожалению, некоторые вещи могут отличатся. Для того, чтобы добавить сервис в автозагрузку - необходимо поставить символьную ссылку в специальную папку соответствующего уровня запуска системы. Если Вы загружаетесь с графическим окружением, то для Вас это в первую очередь уровень 5.
А для того, чтобы сервис успешно запускался при подключении токена, нужно добавить Вашего пользователя в группу scard.
#useradd -G scard user_name

opensc компилируется аналогично, а настраивается даже проще

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте! А как создать эту символьную ссылку? Работаю я в графическом интерфейсе, значит уровень 5. Команда создания наподобие этой, да?

# ln -s ../init.d/openct /etc/rc0.d/K50openct
# ln -s ../init.d/openct /etc/rc1.d/S50openct

Заранее спасибо. Дмитрий.

Re: Как правильно устанавливать RuToken в Linux?

Не совсем.
В debian/ubuntu это будет так:
#ln -s /etc/init.d/openct /etc/rc0.d/K50openct
#ln -s /etc/init.d/openct /etc/rc5.d/S50openct

Уровень выполнения это цифра после rc

0 - выключение
5 - уровень 5 (графический интерфейс)

Re: Как правильно устанавливать RuToken в Linux?

Добрый день!

У меня дистрибутив Fedora 9 (старый, знаю - так надо), установлены следующие свежесобранные пакеты:

opensc-0.11.13-1.fc9.zap.i386
openct-0.6.20-1.fc9.zap.i686
ccid-1.3.11-1.fc9.zap.i686
pcsc-lite-1.5.5-1.fc9.zap.i386

Моей целью является получение работоспособного интерфейса pkcs11, для разрабатываемого нами ПО. Жетоны у нас имеются системы ruToken 2.0 32K140Z[...]. Заранее извиняюсь за излишнее погружение в технические детали, мне важно понимать, как всё это работает внутри.

Вначале была и у меня проблема с очень редким "распознаванием" воткнутого рутокена, которую тут упоминали выше (`openct-tool list' показывает пустой список, требуется перевоткнуть токен несколько раз чтобы заработало). Чтобы вылечить это, сделал следующее изменение:

--- /lib/udev/openct_usb.orig    2010-04-13 17:47:18.000000000 +0400
+++ /lib/udev/openct_usb    2010-04-13 17:33:59.000000000 +0400
@@ -47,6 +47,7 @@
 # we may neeed to wait for the device node, when usbfs is used
 for A in "0 1 2 3 4 5 6 7 8 9"; do
     if [ -e "$DEVICE" ]; then
+        sleep 0.1
         /usr/sbin/openct-control attach usb:$PRODUCT usb $DEVICE
         exit 0
     fi

Теперь ifd драйвер нормально запускается практически всегда. rutoken-tool нормально работает. 'openct-tool read' почему-то не работает, не знаю почему (ещё плохо ориентируюсь в запутанной архитектуре API электронных жетонов):

[2|root@czap|~]openct-tool read
Detected Rutoken S driver
Card present, status changed
failed to read memory card: Operation not supported

Однако opensc-tool нормально считывает файлы с жетона:

[2|root@czap|~]opensc-tool -f
[opensc-tool] reader-pcsc.c:896:pcsc_detect_readers: SCardListReaders failed: 0x8010002e
[opensc-tool] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found
Using reader with a card: Rutoken S driver
3f00 type:  DF, size: 0
select[NONE] lock[N/A] delete[NEVR] create[CHV2] rehab[N/A] inval[N/A] list[NONE] sec: 6F:01:01:01:01:00:FF:FF:02:00:00:00:02:00:00:00:02:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

  3f000000 type:  DF, size: 0
  select[NONE] lock[N/A] delete[NEVR] create[CHV2] rehab[N/A] inval[N/A] list[NONE] sec: 6F:01:01:01:01:00:FF:FF:02:00:00:00:02:00:00:00:02:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

    3f0000000000 type:  DF, size: 0
    select[NONE] lock[N/A] delete[NEVR] create[CHV2] rehab[N/A] inval[N/A] list[NONE] sec: 6F:01:01:01:01:00:FF:FF:02:00:00:00:02:00:00:00:02:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

...

Теперь самое интересное. Пытаюсь увидеть жетон через PKCS11 API:

[2|root@czap|~]pkcs11-tool -L 
[opensc-pkcs11] reader-pcsc.c:896:pcsc_detect_readers: SCardListReaders failed: 0x8010002e
[opensc-pkcs11] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found
[opensc-pkcs11] pkcs15.c:799:sc_pkcs15_bind: returning with: Unsupported card
[opensc-pkcs11] reader-pcsc.c:896:pcsc_detect_readers: SCardListReaders failed: 0x8010002e
[opensc-pkcs11] reader-pcsc.c:1015:pcsc_detect_readers: returning with: No readers found
Available slots:
Slot 0           (empty)
Slot 1           (empty)
Slot 2           (empty)
Slot 3           (empty)
Slot 4           (empty)
Slot 5           (empty)
Slot 6           (empty)
Slot 7           (empty)
Slot 8           (empty)
Slot 9           (empty)
Slot 10          (empty)
Slot 11          (empty)
Slot 12          (empty)
Slot 13          (empty)
Slot 14          (empty)
Slot 15          (empty)

Почему PKCS11 может не "видеть" жетона?

Далее. На сайте написано, что ruToken 2 работает с pcsc-lite версии 1.5.5 и выше. У меня установлена версия 1.5.5, однако почему-то рутокен не виден через этот интерфейс (запуск программы pcsc_scan из пакета pcsc-tools выдаёт, что не обнаружено ни одно устройство для чтения жетонов). Что здесь не так?

Re: Как правильно устанавливать RuToken в Linux?

to zap:
Форматировали ли Вы токен с помощью утилиты pkcs15-init?

Re: Как правильно устанавливать RuToken в Linux?

Попробовал, не помогает:

# opensc-tool -l
Readers known about:
Nr.    Driver     Name
0      openct     Rutoken S driver
1      openct     OpenCT reader (detached)

# pkcs15-init -E -p rutoken -v
Using reader with a card: Rutoken S driver
Connecting to card in reader Rutoken S driver...
Using card driver Rutoken driver.
About to erase card.

# pkcs11-tool -L
[opensc-pkcs11] pkcs15.c:799:sc_pkcs15_bind: returning with: Unsupported card
Available slots:
Slot 0           (empty)
[...]

Если попытаться при форматировании записать целиком файловую структуру, происходит следующее:

# pkcs15-init -E -C -p rutoken -v
Using reader with a card: Rutoken S driver
Connecting to card in reader Rutoken S driver...
Using card driver Rutoken driver.
About to erase card.
About to create PKCS #15 meta structure.
New Security Officer PIN (Optional - press return for no PIN).
Please enter Security Officer PIN: 
Unspecified PIN [reference 2] required.
Please enter Unspecified PIN [reference 2]: 
[pkcs15-init] asn1.c:1442:asn1_encode_entry: cannot encode empty non-optional ASN.1 object
[pkcs15-init] asn1.c:1407:asn1_encode_entry: encoding of ASN.1 object 'dirRecord' failed: Invalid ASN.1 object
[pkcs15-init] dir.c:289:encode_dir_record: sc_asn1_encode() failed: Invalid ASN.1 object
Ошибка сегментирования

После этого pkcs11-tool -L ругается уже несколько иначе:

[opensc-pkcs11] card-rutoken.c:227:rutoken_check_sw: File (DO) not found
[opensc-pkcs11] card-rutoken.c:440:rutoken_select_file: : File not found
[opensc-pkcs11] card.c:554:sc_select_file: returning with: File not found
[opensc-pkcs11] pkcs15.c:799:sc_pkcs15_bind: returning with: Unsupported card
Available slots:
Slot 0           (empty)
[...]

Re: Как правильно устанавливать RuToken в Linux?

Вы его просто неправильно форматируете
Смотрите инструкции здесь:
http://www.opensc-project.org/opensc/wiki/AktivRutokenS

Re: Как правильно устанавливать RuToken в Linux?

Забавно. Я следовал инструкции от Актива, из файла techRutoken4LinuxOS.pdf

1. Форматировать токен
   $ pkcs15-init -E -p rutoken
       Для утилиты pkcs15 init поддерживается вызов только с данными параметрами.

Данная инструкция устарела? Зачем тогда вообще нужен профиль "rutoken"?

В любом случае, спасибо за помощь. Теперь жетон стал виден через pkcs11 API.

Не подскажете смысл параметар --auth-id? Я пробовал форматировать с разными идентификаторами, никакой разницы не замечаю.

Re: Как правильно устанавливать RuToken в Linux?

Это очень старая инструкция.
Она подходила для очень древней, модифицированной версии OpenSC.

Параметр --auth-id нужен для того, чтобы увязать внутреннюю структуру хранения данных в Рутокене с с общей структурой, принятой в проекте OpenSC.

Для правильной работы токена, используйте --auth-id 02

Re: Как правильно устанавливать RuToken в Linux?

Так, теперь следующая проблема :)

Рутокен, отформатированный в линуксе не читается в Windows через rtPKCS11.dll (жетон виден пустым, хотя на нём я создал пару файлов через pkcs15-init, и они нормально читаются в линуксе). Есть ли способ отформатировать жетон в совместимом кросс-платформенном формате?

И ещё, существует ли утилита для Windows, позволяющая смотреть/создавать файлы на жетоне через интерфейс PKCS11? Типа rtEditor, но через PKCS11.