Интернет-банк iBank2 в Linux (на примере Абсолютбанка)
Пришлось немало повозиться, прежде чем запустить его на своей машине, поэтому решил поделиться опытом. В основном проблемы были с токеном.
1. Установка usb-токена
Вначале нам выдали в банке e-токен черного цвета (исполнение «М»), который заявлял о себе вот так:
Bus 004 Device 009: ID 096e:0005 Feitian Technologies, Inc.
Мне так и не удалось заставить его работать. Поэтому в банке его любезно заменили на етокен оранжевого цвета (исполнение «А»), который определяется так:
Bus 003 Device 002: ID 0a89:0060 (производитель почему-то умалчивает о себе, но мы то знаем что это rutoken ;-) )
Чтобы токен заработал установил пакеты pcscd, libccid, libpcsclite1 (под root):
aptitude install pcscd, libccid, libpcsclite1
После открыл файл /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist (я делал это по F4 в mc) и убедился, что в секции ifdVendorID есть 0x0A89, а в секциях ifdProductID и ifdFriendlyName им соответствуют значения 0x0060 и «Aktiv Rutoken Magistra». Если таких строчек нет, то добавьте (при этом название можно любое ставить).
Теперь токен горит красным цветом, и это здорово.
Можно остановить сервис pcsc:
и более подробно понаблюдать как определяется токен, для этого выньте токен из usb и запустите сервис в режиме debug:
После вставки токена в консоль у меня выдалось:
00000141 hotplug_libhal.c:366:HPAddDevice() Adding USB device: usb_device_a89_60_noserial_if0 01001157 readerfactory.c:1024:RFInitializeReader() Attempting startup of Aktiv Rutoken Magistra 00 00 using /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so 00000379 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0 00000066 ifdhandler.c:1532:init_driver() Driver version: 1.3.11
И это тоже замечательно.
ВНИМАНИЕ ГРАБЛИ 1: важная деталь, которая возможно всплыла только в дистрибутиве Debian 5.0. Суть в том, что iBank2 в своей работе использует библиотеку /usr/lib/libpcsclite.so, но ее не оказалось после установки libpcsclite1, зато были libpcsclite.so.1 и libpcsclite.so.1.0.0, смекнув делайте символическую ссылку:
ln -s libpcsclite.so.1.0.0 libpcsclite.so
я же скопировал по Shift+F5 в mc симлинк libpcsclite.so.1, изменив имя.
2. Пару слов о Java
iBank использует «родную» Sun'овскую джаву, поэтому мне пришлось скачать 19Мб по ссылке http://java.com/ru/download/manual.jsp?locale=ru&host=java.com, распаковать в отдельную папку, которую я назвал jre150lin.
3. Запуск PC-банкинга (off-line версия iBank2)
Банки обычно выкладывают tar-архив с дистрибутивом, можете сами поискать http://www.google.ru/search?hl=ru&q=PC-Banking-linux-i586. Ссылку на дистрибутив нашего банка удалось узнать только после переписки со службой тех. поддержки: https://server1.ibank.absolutbank.ru/PC-Banking-linux-i586.tar.bz2. Скачал и распаковал содержимое в папку iBank2abl.
Если у Вас уже была установлена Windows-версия PC-banking, то скопируйте файлы NNNN.odb и iBank.odb из C:\Program Files\Bifit PC-банкинг\ в новую папку (iBank2abl), чтобы заново не вводить данные по своей фирме. Кстати NNNN — это некоторое число.
Теперь ГРАБЛИ 2: в стандартном дистрибутиве лежит shell-файл, но он недоделанный, в частности в Linux почти всегда используется кодировка UTF-8, а iBank2 использует Windows-1251. Поэтому когда я запустил интернет-банк и провел сеанс связи, то после перезапуска iBank2 увидел «крякозяблы» вместо русских букв.
Чтобы «вылечиться» от этой напасти пришлось ставить доп. консоль:
localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
и создать свою версию shell-файла:
export JAVA_HOME=`pwd`/jre150lin export JAVACMD=$JAVA_HOME/bin/java export LANG=ru_RU.cp1251 export LC_ALL=ru_RU.cp1251
if [ -e ../iBank2abw/83670.odb ]; then mv ../iBank2abw/83670.odb ./ mv ../iBank2abw/iBank.odb ./ fi
$JAVACMD -Xmx256m -cp ./launcher.jar com.bifit.launcher.Launcher
Станет яснее дальше.
4. Запуск iBank2 с флэшки на любом компьютере
Чтобы пользоваться интернет-банком в любой момент и в любом месте, я ношу с собой usb-токен и флешку. На флешке в папке iBank все и лежит:
iBank2abl iBank2abw iBank2pb jre143win jre150lin run_ab.bat run_ab.sh run_pb.bat windrv32
Поясню немного: iBank2abl - папка с PC-банкингом, который мы создали по п. 3 iBank2abw - папка с PC-банкингом из мастдайного C:\Program files\iBank2 jre143win - мастдайная java из C:\Program files\Java jre150lin - линуксовая java по п. 2 run_ab.sh - шелл запуска в линуксе run_ab.bat - батник для мастдая windrv32 - папка с дровишками токена для мастдая
Под мастдаем запускаю bat-файл:
"..\jre143win\bin\javaw.exe" -Xmx256m -cp launcher.jar com.bifit.launcher.Launcher exit
Вот такая история из жизни, надеюсь поучительная ;-)
Сенькс, как раз оформляю документы в АБ. Про токен написано в доке, а вот насчет симлинка был не в курсе.
- Онлайновую версию пускать пытались? Куда ей складывать libibank2agava.so и libibank2ccom.so ? Или они нафик не нужны (там вроде только ГОСТ)?
- Если библиотеки все-таки нужны, где бы еще нарыть версии для ARM ?
Ещё бы live-usb linux со всем необходимым и настроенным для работы клиента - и было бы просто феерично
On-line версию тоже пробовал - работает. Для этого в Opera пришлось указать sun-овскую Java: «Инструменты - Настройки - Дополнительно - Содержимое - Настроить Java - Путь к Java», задал: /usr/lib/jvm/jre150/lib/i386 где jre150 - сановская ява.
Насчет библиотек, я не понял зачем они, так и лежат в папке PC-банкинга.
>>Поэтому в банке его любезно заменили на етокен оранжевого цвета >>(исполнение «А»)
Etoken это название токенов некоторой известной компании. А токен, о котором Вы пишете это действительно Рутокен Магистра.
В файле Info.plist строчка появилась начиная с libccid версии 1.3.0, в более ранних версиях ее действительно следует добавлять.
И насчет первых граблей: действительно странно, что в дебиане симлинки не делаются, в других дистрибутивах я такого не замечал.
Все делаю как вы сказали, токен горит красным, опера открывает нормально плагин в онлайне, но этот плагин ни в какую не хочет видеть мой токен. или там как-то надо прописывать?
>Bus 004 Device 009: ID 096e:0005 Feitian Technologies, Inc.
Есть еще комплект ридер (CCID совместимый) и полноформатная карта. ru token - это рутокен магистра, на сайте есть описание.
Во всех трех случаях используется одинаковая микруха смарт-карты и карточная ОС.
Кстати, кинь сюда пожалуйста, lsusb -v для rutoken'а
>, но этот плагин ни в какую не хочет видеть мой токен
симлинк не сделал, читай «грабли 1». p.s. или пробуй pc-банкинг p.s.2. дистрибутив родной (своего банка) используешь? p.s.3. lsusb нам свой покажи
Кстати, кинь сюда пожалуйста, lsusb -v для rutoken'а
Bus 003 Device 002: ID 0a89:0060 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0a89 idProduct 0x0060 bcdDevice 1.02 iManufacturer 1 Aktiv Co., ProgramPark iProduct 2 Rutoken Magistra iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 72 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 3 CCID bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 11 Chip/SmartCard bInterfaceSubClass 0 bInterfaceProtocol 2 iInterface 0 ChipCard Interface Descriptor: bLength 54 bDescriptorType 33 bcdCCID 1.00 nMaxSlotIndex 0 bVoltageSupport 1 5.0V dwProtocols 2 T=1 dwDefaultClock 3580 dwMaxiumumClock 3580 bNumClockSupported 0 dwDataRate 9600 bps dwMaxDataRate 9600 bps bNumDataRatesSupp. 0 dwMaxIFSD 254 dwSyncProtocols 00000000 dwMechanical 00000000 dwFeatures 00020840 Auto parameter negotation made by CCID Short APDU level exchange dwMaxCCIDMsgLen 261 bClassGetResponse echo bClassEnvelope echo wlcdLayout none bPINSupport 0 bMaxCCIDBusySlots 1 Device Status: 0x0000 (Bus Powered)
Симлинк, кстати, лучше такой командой сделайте (под root):
# ln -s /usr/lib/libpcsclite.so.1.0.0 /usr/lib/libpcsclite.so
Позавчера тоже подключился к Абсолютбанку.
На убунте все похоже, с той разницей, что библиотека лежит не в /usr/lib а просто в /lib.
Соответственно, создание симлинка такое:
# ln -s /usr/libpcsclite.so.1.0.0 /usr/lib/libpcsclite.so
Отдельным банк-клиентом не пользовался, мне интернетовского хватает. Ставим pcscd, делаем симлинк и вперед.
PS. Токен надо сразу просить «рыжий», а то много-где на «чорные» перешли (там гимор с проприетарными драйверами).