Ключевые слова:java, bankclient, finnance, (найти похожие документы)
From: Владимир Закляков
Date: Mon, 15 Feb 2010 17:02:14 +0000 (UTC)
Subject: Как правильно запустить банк-клиент iBank 2 в Linux
Материал предоставлен редакцией журнала Системный администратор.
Опубликовано в журнале "Системный администратор" N 11 2009
Вы думаете найти в статье ответ на поставленный вопрос? Частично его
найдёте, но по большей части предстоит ответить самостоятельно. Именно
ваше мнение может изменить ход истории
Чтобы быть хорошим человеком, следует совершать благие дела постоянно.
Так и с программным обеспечением: создав кросс-платформенный продукт,
важно не только его выпустить в свет, но и поддерживать. Так о чём же
будет статья? О жизни и о банковских технологиях.
Сегодня многие бухгалтеры идут в ногу со временем и предпочитают
работать с корпоративными банковскими счетами удалённо в режиме
on-line. Технологии позволяют в течение банковского дня совершать
операции по счёту, а также видеть их историю и знать остаток 24 часа в
сутки 7 дней в неделю без участия сотрудников банка. Несомненно, это
плюс, но есть ли единые пользовательские стандарты в этой сфере? Увы,
нет, и виной тому безопасность. Из-за конкуренции банки не доверяют
друг другу, не видят смысла договариваться, и поэтому техническое
исполнение от одного банка к другому сильно варьируется. Подчас
используются не только разные программные продукты, но и аппаратные.
Видно, что проблема находится за пределами интересов конкретных банков,
поэтому решение её будет извне, либо централизованно через изменения в
законодательстве, то есть придёт "сверху", либо жизнь со временем
расставит всё на свои места, то есть "снизу".
Возможно, попытку в решении проблемы "снизу" предприняла фирма
"БИФИТ" [1], основное направление деятельности которой - разработка,
внедрение и сопровождение программного обеспечения для электронного
банкинга - системы iBank 2. Этот коммерческий продукт предлагается для
продажи банкам, а те в свою очередь, купив этот продукт, делают выбор
за своих клиентов. Не знаю, то ли случайно, то ли подумав на будущее, в
качестве основы системы iBank 2 была выбрана среда Java. Использование
Java позволило создать кросс-платформенное приложение, не привязанное к
операционной системе на стороне клиента, но в то же время породило ряд
проблем, связанных с поддержкой.
С одной стороны, клиентам не навязывается выбор ОС Windows, Linux или
Solaris, с другой - поддержка ни одной платформы не осуществляется на
должном уровне.
Если бы не один случай из жизни, возможно, не было бы этой статьи. В
одной фирме до поры до времени использовался Java-клиент для ОС
Windows, но случилось так, что сначала в стране были майские праздники,
а в фирме вынужденные отпуска, потом смена кадров, а уже в июне
выяснилось, что система перестала работать.
Сложно определить дату и точную причину, почему это произошло: то ли в
банке что-то поменяли, то ли клиент обновил у себя OpenOffice (и, как
следствие, обновилась Java), то ли установили очередное исправление на
операционную систему... Но загруженное Java-приложение от банка после
выбора файла ключей на стороне клиента начало переводить компьютер в
состояние BSOD с перезагрузкой.
Долгая переписка с технической поддержкой банка затянулась на месяцы.
Поставьте то, попробуйте это, пришлите вывод msinfo32, а за одно и
файлы minidump-а..., а в конце очередной ответ "... причина
перезагрузки пока неизвестна".
Первые несколько дней простоя в работе бухгалтерии привели к тому, что
проблема через руководство вернулась в технический отдел, где было
принято решение: пока не будет устранена проблема с Windows,
"пересадить" несговорчивую бухгалтерию вместе с неработающим
банк-клиентом iBank 2 под Linux. Учитывая, что практика запуска клиента
iBank 2 в фирме ранее имелась, а запуск других приложений вроде "1С"
под Linux не раз обсуждался на форумах и страницах журнала, долго ждать
не пришлось. В почте быстро нашлось письмо от бывшего ИнвестСберБанка
(сейчас ОТП-Банк) с инструкциями по установке и файлом криптобиблиотеки
libibank2agava.so. Переустановка операционной системы и профильного
программного обеспечения в отделе бухгалтерии из непосильной задачи
стала делом техники.
Установка банк-клиента iBank 2 под Linux (32-бит)
Замечание: Данное руководство не является рекламой конкретного решения,
наоборот, освещаются проблемы и нерешённые вопросы. Возможно,
используемая методика будет интересна с целью переноса применяемых
методов к другим программным продуктам, использующим Java.
Присланная ранее инструкция была неточной и неполной, поэтому привожу
полную последовательность действий по запуску iBank 2-клиента под Linux
со своими комментариями. В качестве рабочего дистрибутива был выбран
уже использующийся на фирме Linux Fedora 11 (i386).
Для работы клиента требуется браузер с поддержкой Java. В качестве
браузера мы выбрали используемый по умолчанию Firefox 3.5, а поддержку
Java можно выполнить несколькими способами [1]. Наиболее простой и
быстрый - это установка пакета java-1.6.0-openjdk-plugin через:
# rpm -ihv java-1.6.0-openjdk-plugin-1.6.0.0-22.b16.fc11.i586.rpm \
java-1.6.0-openjdk-1.6.0.0-22.b16.fc11.i586.rpm
или:
# yum install java-1.6.0-openjdk-plugin
Но, увы, почему-то работать с этой версией банк-клиент не хочет. При
первом же обращении в ОТП-Банк за помощью там предложили проверить
версию на сайте Java.com, а после озвучивания увиденного (см. рис. 1)
настоятельно посоветовали использовать версию Java от Sun Microsystems.
Рисунок 1. Альтернативная версия Java не работает с банк-клиентом
В связи с этим пришлось удалить установленный пакет командой:
# yum remove java-1.6.0-openjdk-plugin
или:
# rpm -ihv java-1.6.0-openjdk-plugin-1.6.0.0-22.b16.fc11.i586.rpm
Уточнить имя пакета можно с помощью команды:
# rpm -qa|grep java
Далее заходим на сайт Java.com [3] или [4] и скачиваем последнюю версию
Java Runtime Environment (Linux RPM, самораспаковывающийся файл). В то
время, когда писалась статья, это был файл jre-6u16-linux-i586-rpm.bin.
Инструкцию по загрузке и установке исполнительной среды Java в Linux
можно найти в [5].
Скачанному bash-файлу необходимо передать управление либо как:
#chmod +x jre-6u16-linux-i586-rpm.bin
#./jre-6u16-linux-i586-rpm.bin
либо:
#sh jre-6u16-linux-i586-rpm.bin
На консоли будет отображено лицензионное соглашение, которое следует
прочитать, пролистав до самого конца. Для чтения следующей строки
нажимайте клавишу "пробел". Чтобы завершить установку, после
прочтения вам придётся подтвердить соглашение, набрав yes и нажав
<Enter>. В рабочей директории будет создан rpm-файл, после чего будет
запущена его установка.
Do you agree to the above license terms? [yes or no] yes
Unpacking...
Checksumming...
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP
(Zip-Bugs@lists.wku.edu).
inflating: jre-6u16-linux-i586.rpm
.Подготовка... ################################## [100%]
1:jre ######################## [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
plugin.jar...
javaws.jar...
deploy.jar...
Done.
После установки среды Java необходимо установить модуль для браузера,
то есть создать мягкую ссылку в директории, где браузер ищет плагины на
соответствующий модуль Java.
Обратите внимание, что следует именно сделать ссылку, а не копировать
файл. Копирование приведёт к сбою и аварийному завершению работы
браузера при каждой попытке загрузки и запуска Java-апплетов [6].
Опытным путём было установлено, что ссылку можно создать в домашней
директории каждого пользователя (~/.mozilla/plugins), например:
$ ln -s /usr/java/jre1.6.0_16/plugin/i386/ns7/libjavaplugin_oji.so \
/home/buh/.mozilla/plugins/libjavaplugin_oji.so
или согласно руководству пользователя централизованно в директории
/usr/lib/firefox-3.5b4/plugins. Если поддиректории plugins у вас нет,
то создайте её командой:
# mkdir /usr/lib/firefox-3.5b4/plugins
Директория /usr/lib/firefox-3.5b4 должна у вас уже быть. При
необходимости внесите коррективы, указав используемую вами версию
браузера. Затем создайте ссылку:
# ln -s /usr/java/jre1.6.0_16/plugin/i386/ns7/libjavaplugin_oji.so \
/usr/lib/firefox-3.5b4/plugins/libjavaplugin_oji.so
После установки модуля перезапустите браузер, зайдите на сайт Java.сom
и проверьте версию. В случае успеха вы увидите примерно следующую
картинку (см. рис. 2).
Рисунок 2. Проверка установки Java, установлена последняя рекомендованная версия
Замечание: если вам по каким-то причинам необходимо использовать пакет
OpenJDK, идущий по умолчанию с операционной системой и удалённый нами в
начале этого раздела, то рекомендую использовать alternatives. (Идёт в
составе пакета chkconfig.) Данная программа была создана на основе идеи
аналогичной утилиты из дистрибутива Debian и позволяет иметь несколько
различных версий одного и того же программного обеспечения, помогая
быстро и удобно переключаться между ними с помощью ссылок. Подробнее,
как это можно сделать, написано в [2].
После того как вы увидели надпись "У вас установлена рекомендованная
версия Java" (cм. рис. 2), с помощью браузера заходим на страницу
банка https://ibank.isb.ru/iBank2 или https://ibank.tfbank.ru или
https://212.57.108.118:444 (адрес получен 1 октября 2009 года от
поддержки ТФ-Банка) и щёлкаем по изображению человечка "Обслуживание
юридических лиц".
Далее у вас, скорее всего, откроется окно предупреждения безопасности с
вопросом, доверяете ли вы загружаемому Java-апплету или нет. Жмём Run.
В результате загрузки и запуска апплета должно появиться сообщение о
том, что у вас не установлена криптобиблиотека (см. рис. 3).
Рисунок 3. Сообщение о том, что не установлено сертифицированное криптосредствоУстановка криптобиблиотеки
Далее вам следует обратиться в банк (или фирму "Бифит") и получить от
него файл libibank2agava.so (размер файла 83105 байт). Что интересно,
поисковая система Google среди первого десятка ссылок нашла этот файл в
сети по адресу: ftp://ftp.masterbank.ru/pub/IBank2/crp/linux-i586/libibank2agava.so
На поверку файл оказался идентичным, такой же файл был получен и от
ИнвестСберБанка, ОТП-Банка и Банка торгового финансирования.
Файл следует скопировать в домашнюю директорию пользователя (определено
опытным путём) либо в директорию /lib или любую другую, указанную в
переменной, как рекомендуется банком:
java.library.path =
/usr/java/jre1.6.0_16/lib/i386/client:/usr/java/jre1.6.0_16/lib/i386:/usr/lib/firefox-3.5b4: \
/usr/lib/firefox-3.5b4/plugins:/usr/lib/firefox-3.5b4:/usr/java/packages/lib/i386:/lib:/usr/lib
Значение переменной java.library.path можно узнать с помощью
Java-консоли.
Замечание: для того чтобы попасть в Java-консоль, следует выполнить
любую из команд:
$/usr/java/jre1.6.0_16/bin/ControlPanel
или:
$/usr/java/jre1.6.0_16/bin/jcontrol
В появившемся окне (см. рис. 4) следует выбрать вкладку Advanced, а
параметр Java console установить в Show console.
Рисунок 4. Включение показа Java-консоли
После загрузки любого Java-апплета вы увидите окно Java-консоли (см.
рис. 5), где будет выводиться отладочная информация. Нажав на
клавиатуре <S>, выбрав пункт s dump system and deployment properties,
вы сможете увидеть все переменные и настройки.
Рисунок 5. Java-консоль
После копирования криптобиблиотеки перезагрузите браузер и повторите
вход на страницу банка. В случае успеха должно появиться окно выбора
ключа шифрования. (см. рис. 6).
Рисунок 6. Окно выбора ключа шифрования, вход в систему интернет-банкинга
Если вы включали Java-консоль с отладочной информацией, её можно
выключить. Вход в систему и проверку работы апплета можно осуществить с
тестовым ключом. Взять его можно, например, тут:
https://ibank.isb.ru/iBank2/test.dat, пароль 123123.
Что в итоге?
Дочитав до этих строк, половина из вас наверняка задастся вопросом,
почему статья называется "А нужен ли банкам Linux?" А называется она
так потому, что получить вышеописанную последовательность действий по
установке от ранее упомянутых банков не предоставлялось возможным.
Руководство по установке банк-клиента iBank 2 под Linux пришлось
написать самому. Что интересно, на этом проблемы по использованию
интернет-банкинга в Linux не закончились, а лишь начались.
Если вы заметили, то был выбран i386-дистрибутив. Жизнь не стоит на
месте, почти всё новое "железо" 64-битное. Логично спросить: а как
быть, если у вас x86_64-аппаратная платформа и аналогичный дистрибутив
Linux? Решений много, но нет ни одного оптимального. Рассмотрим
возможные варианты:
1. Установить i386-дистрибутив и не использовать 64-битные возможности
операционной системы.
2. Установить x86_64-операционную систему, но i386-сборку браузера
Firefox, отказавшись от 64-битных плагинов и некоторых возможностей
браузера.
3. Установить nspluginwrapper [8], но он почему-то не желает работать с
32-битными плагинами Java, по крайней мере в файле
/etc/sysconfig/nspluginwrapper можно увидеть следующее:
# List of plugins what are excluded from wrapping
# Names of plugins are separated by ':'
export IGNORE_WRAP="libtotem*:libjavaplugin*:gecko-mediaplayer*:mplayerplug-in*:librhythmbox*"
4. Использовать wine или другие эмуляторы.
5. Установить 64-битную версию ОС, браузера и Java, запросив у фирмы
"Бифит" 64-битную версию криптобиблиотеки.
Наиболее простым решением будут первый и второй варианты, третий и
четвёртый будут более сложными и изощрёнными, пятый является наиболее
правильным и перспективным, но фирма "Бифит" не считает данный путь
востребованным.
Именно сейчас ваше мнение может изменить историю. Скажите своё слово на
форуме журнала или напрямую фирме "Бифит", что вам ближе именно этот
способ использования интернет-банкинга.
Так нужен ли банкам Linux?
Предполагаю, что ОТП Банку не нужен, в подтверждение данного вывода
привожу цитату из переписки с технической поддержкой банка:
"Проблема в том, что нет 64-битных Java-плагинов для браузеров. Об
этом можно получить информацию на сайте [6]www.java.com. Грубо говоря,
даже если будут криптобиблиотеки на 64 бита, то их негде будет
использовать".
Это притом что 64-битная версия плагина Java уже стоит на моём
компьютере. Выводы сделайте сами. На ваш выбор доступны как OpenJDK,
так и Sun-версия. Не говоря уже о том, что можно вспомнить, с чего
вообще началась эта история установки интернет-банкинга в Linux. А
вашему банку и вашему бизнесу нужен Linux?
Поддержит ли Sun Java?
Просьбу о помощи с установкой Java можно отнести к SUN Microsystems,
которым был задан вопрос на сайте Java
(http://www.java.com/en/download/support.jsp) в разделе Consumer
Java Feedback: "Как заставить работать i386 Java-плагин в браузере
x86_64-сборки без замены последнего на i386-версию". Популярность и
актуальность данного вопроса определяются числом отзывов (вопросов),
так что спешите оставить своё сообщение! Если технология Java настолько
перспективна, то резонно спросить: поддержит ли Sun пользователей Java
в данном вопросе?
Подождём, посмотрим. Описание проблем и решений по использованию
интернет-банкинга в 64-битных сборках Linux так и просится во вторую
часть статьи.
1. Фирма "Бифит" - http://www.bifit.ru.
2. Установка Java-плагина для Linux Fedora 10 -
http://www.mjmwired.net/resources/mjm-fedora-f10.html#java
3. Страница загрузки Java под Linux -
http://java.com/ru/download/linux_manual.jsp?locale=ru&host=java.com
4. Страница загрузки Java -
http://java.sun.com/javase/downloads/index.jsp
5. Инструкции по загрузке и установке исполнительной среды Java в Linux
- http://java.com/ru/download/help/5000010500.xml
6. Mozilla Plugin Support on Linux (x86) -
http://plugindoc.mozdev.org/linux.html#Java
7. Плагин Java для Firefox -
http://linuxforum.ru/index.php?showtopic=60873&st=0&p=593491&#entry593491
8. Nspluginwrapper is an Open Source compatibility plugin -
http://gwenole.beauchesne.info/en/projects/nspluginwrapper
Благодаря умельцам компании "БИФИТ",
я впервые увидел ОПРОВЕРЖЕНИЕ девиза Java:
"Написано однажды, работает везде",
т.к. iBank2 в банке "УБРиР" запускается и работает в Линуксе, НО ЧАСТИЧНО(!):
Новости получает и показывает, списки папок получает и показывает, документы создает и редактирует,
Но НЕ ПОДПИСЫВАЕТ их (!), т.е. они НЕ ИСПОЛНЯЮТСЯ!
Проверял в июне 2012:
* Java - OpenJDK6, OpenJDK7, Oracle 7u4
* браузеры Firefox и Chromium
* дистры Ubuntu 12.04 / Xubuntu 11.10 / Mint 13 / Mint 11
>[оверквотинг удален]
> "Написано однажды, работает везде",
> т.к. iBank2 в банке "УБРиР" запускается и работает в Линуксе, НО ЧАСТИЧНО(!):
> Новости получает и показывает, списки папок получает и показывает, документы создает и
> редактирует,
> Но НЕ ПОДПИСЫВАЕТ их (!), т.е. они НЕ ИСПОЛНЯЮТСЯ!
> Проверял в июне 2012:
> * Java - OpenJDK6, OpenJDK7, Oracle 7u4
> * браузеры Firefox и Chromium
> * дистры Ubuntu 12.04 / Xubuntu 11.10 / Mint 13 / Mint
> 11
Присоединяюсь на все 100%. На борту Ubuntu 12.04 + iBank от Москомбанка. Подписать документы невозможно, и еще не срабатывает закрытие документа через всплывающее меню: "Закрыть, Сохранить, Отмена".
Я не только запускал, я ещё им и пользуюсь, для работы - в том числе ведение бухгалтерии (1С 8.3), сдачи отчетности (Такском 1С-Спринтер), ИБ (УБРиР).
С этого года у них ява клиенты больше не поддерживаются, используется веб версия. Плагина для 1С под платформу GNU\Linux пока не выходило, нет интеграции с библиотекой криптографии.
Установка простая как тапок: На сайте УБРиРа (ЛК ЮЛ Про) или на сайте бифита качаем плагин в виде .deb пакета, ставим. Ещё нам нужна библиотека криптографии:
http://www.ubrr.ru/korporativnym-klientam/raschetnoe-obsluzhivanie/internet-b Распаковываем библиотеки (включая файл .sig) в /usr/lib/
Запускаем sudo ldconfig
Если используется токен iBank, Rutoken ЭЦП или аналогичный, должны быть установлены драйверы демона pcscd, либо с сайта ibank, либо КриптоПро 4. С Лисси не тестировалось.