Авангард интернет-банкинг vs. Linux

Upd: Более неактуально, там теперь полностью джава.
Садись, малыш, сегодня я расскажу тебе как пользоваться интернет-банкингом Авангарда в Линуксе.
Итак ты являешься клиентом банка Авангард. У тебя должны быть:

  • логин и пароль от интернет-банкинга;
  • карточка с одноразовыми паролями;
  • флэшка с ключом ЭЦП.

С первыми двумя пунктами всё просто: логин с паролем позволяют зайти в веб-интерфейс и получить любую информацию. Если требуется выполнить типовой платеж, то раз в сеанс будет запрошен одноразовый пароль с карточки. Самое интересное происходит в ситуации, когда требуется выполнить какое-либо действие, которое по законодательству требует твоей подписи. Например, хочется открыть вклад. Или поменять какой-нибудь лимит для карточки. Или перевести миллионы в другой банк. Казалось бы надо идти в офис и там писать заявление, но не всё так страшно: в нашей самой лучшей на свете стране есть закон об Электронных Цифровых Подписях и Авангард как раз одну такую ЭЦП с православным ГОСТовским криптоключем внутри тебе сгенерировал.
Но тут-то и кроется подстава: софт, конечно же, кривой. Ну как не то чтобы совсем уж, чего обижать авторов, но не без забавностей.
Для того, чтобы проверить работу цифровой подписи можно попробовать изменить какой-нибудь лимит на закладке “Справочники/Лимиты по картам”.
Во-первых, для работы ЭЦП требуется java-plugin. Не знаю, как там с icedtea (или как там оно зовется), хотя вроде где-то писали, что и он работает, но я не стал оригинальничать и поставил java-plugin от некогда славной фирмы SUN (пакет sun-java6-plugin).
И ничего не заработало. Честно сказать, я это заметил еще месяца полтора назад, что не работают у меня java-апплеты, но списал это на то, что где-то прописалась какая альтернативная джава из gcj или еще какого проекта, и забил. А тут занялся вопросом серьезно – сносил, переставлял… Ничего не помогает. Вместо апплета выдает окошко с надписью “Error. Click for detail”, по клику на которое вызывается java-console с текстом о Class not found и прочих эксепшнах, но главное с ключевой строчкой: “Caused by: java.net.ConnectException: Network is unreachable”
Небольшое расследование вывело на следующую проблему: #560238. Если коротко, то суть ее состоит в том, что Marco d’Itri добавил в пакет netbase установку sysctl’я ломающего некоторый “кривой” софт. Не будем сейчас обсуждать Марко и его маму, равно как кривость сановской джавы и информационность RFC 3493. Просто факт остается фактом. Сейчас сановская джава не сможет подключиться к сети при установленном net.ipv6.bindv6only=1
Так что первым нашим шагом будет открытие /etc/sysctl.d/bindv6only.conf и установку там net.ipv6.bindv6only в значение 0. После чего стоит сказать “/etc/init.d/procps start” Ну это всё пока что актуально только на Debian Squeeze, остальным повезло. (Пока?)
Теперь апплет-таки запускается и, если тебе особенно повезло, радостно сообщает: “Обнаружение программы… Err” с очень содержательным пояснением: “Ошибка обнаружения/скачивания программы шифрования: invalid stream header: 0D0A0D0A”
Тут всё просто и очевидно (да, это сарказм): открываешь настройки IceWeasel/FireFox и разрешаешь там “Third-party cookies”. Они там в разных версиях в по разному называются/находятся, так что проще всего открыть “about:config” и там поставить значение переменной network.cookie.cookieBehavior в 0. Кстати эта проблема, наверняка должна проявляться и под виндой.
Едем дальше: аппет сообщает “Ошибка выполнения программы подписи  : Cannot run program “c:\avn_ib/avn_cc.exe”: java.io.IOException: error=13, Permission denied”. Если посмотреть в домашний каталог пользователя (а именно он является текущим для java-приложений, запускаемых из браузера), то мы радостно обнаружим там каталог “c:\avn_ib” внутри которого действительно есть неисполняемый файл avn_cc.exe
Как ты уже догадался, гений русских программистов бесконечен. Java-апплет всего-лишь является троян-дропперомзагрузчиком для настоящей боевой криптографии. Которая написана, естественно под винду. Ну тут всё просто. Он хочет запускать этот бинарник? Нет проблем! Чтобы работали виндовые программы, ставим wine. Чтобы бинарник можно было запускать напрямую, ставим binfmt-support. (Вообще он рекомендуется вайном, но мало ли, у тебя он не стоит. Ну и в других дистрибутивах пакет может называться иначе, ты уж сам разберись, главное чтобы работал прямой запуск виндовых прог: не только “wine prog.exe”, но и просто “./prog.exe”) Дальше, понятно, надо сделать бинарник avn_cc.exe исполняемым.
Нет, это еще не всё. Теперь апплет выдает нам не менее экзистенциальное “Ошибка выполнения программы подписи: ret 2 команда <c:\avn_ib/avn_cc.exe c:\avn_ib/avn_clb_sign.in>” Надо немного подумать: чтобы бинарник можно было запустить из вайна, он должен быть доступен внутри виндового окружения. А какой путь сейчас у этого бинарника? Правильно Z:\home\user\c:\avn_ib\avn_cc.exe В общем не бывает таких путей в виндовсе. Решаем всё просто:

mv ~/c:\\avn_ib ~/.wine/drive_c/avn_ib&&ln -s ~/.wine/drive_c/avn_ib ~/c:\\avn_ib

Пробуем еще раз… О чудо! Крипто-хрень спрашивает нас где лежит приватный ключик. Ну теперь достаточно воткнуть флэшку с ключом, примонтировать и оно всё само подпишет.
Велик русский Левша. Умеет подковать англицкую джаву.
PS А Авангард и его интернет-банкинг действительно хорош. Ну и MasterCard.Metro у него по самым адекватным тарифам. В общем рекомендую. Кстати, обещают подружиться до конца года(?) с московским наземным транспортом и питерской подземкой.

39 thoughts on “Авангард интернет-банкинг vs. Linux”

  1. Так вот оно в чём дело с джавой-то. А то я тоже некоторое время назад заметил, что не работает, но разбираться лень было.
    Какое счастье, что мой интернет-банк не использует ни джавы, ни флэша, работает в FF и своего софта не предлагает.

  2. Благодарю за решение проблемы. Всё получилось.

  3. Огромное спасибо. У меня тоже всё заработало. Хотя, конечно, руки бы поотрывать тем горе-программистам, которые писали этот код и спихивали его банку.

  4. Спасибо. icedtea кстати не работает пришлось устанавливать яву от sun.

  5. Спасибо, а то замучился с виртуалкой. В ubuntu 10.10 первой проблемы по списку не обнаружено. Работает только с sun’овсой java’ой

  6. Они что-то поменяли, видимо, не работает указанный способ.
    Пути поменяли, но я всё сделал в соответствии с новыми путями, и всё равно выводит
    “Ошибка выполнения программы подписи: ret 2 команда ”
    Команду выполнял такую:
    mv ~/c:\\avn_clb\\ ~/wine_c/avn_clb\\ && ln -s ~/wine_c/avn_clb\\ ~/c:\\avn_clb\\

  7. О, офигенно, спасибо. Пошел настраивать под макось.

  8. В конце концов в Ubuntu 10.04 сработала такая команда (после установки sun-java6-plugin через доп. репозиторий http://www.clickonf5.org/linux/how-install-sun-java-ubuntu-1004-lts/7777):
    mv ~/c:\\avn_clb\\ ~/wine_c/avn_clb && ln -s ~/wine_c/avn_clb ~/c:\\avn_clb\\ && chmod 755 ~/wine_c/avn_clb/avn_cc.exe
    после чего нужно добавить exe в список binfmts:
    update-binfmts –install DOSExe /usr/bin/wine –extension exe

    1. У меня тоже Ubuntu 10.04. После выполнения всех рекомендаций браузер выдает ошибку “Ошибка обнаружения/скачивания программы шифрования: invalid stream header: 3C21444F”
      Можете что-нибудь посоветовать?

  9. Вчера безобразие были исправлено и кривда выпрямлена. Всё работает нативно. Трижды ура.

        1. Плохо, что никакого пресс-релиза нет, вообще не уделяют внимания IT вопросам.

          1. Гыгы, ну это нормально я считаю.
            Сам не пробовал что там поменялось, и люди, которым настроил, не жаловались, что что-то не работает, так что всё ОК. А это главное 🙂

          2. Я пока только два поручения подписал:
            подписал первое – всё нормально.
            попробовал подписать второе – ошибка (повторилось несколько раз)
            перезапустил браузер (чтобы явно переинициализировать джава плагин) – всё нормально
            больше пока не экспериментировал

  10. http://avangard.ru/rus/about/press/bank/index.wbp?article-id=F11C0AE1-DDDA-47E3-AE02-5E4CEAA745BF
    Они тебя послушались =)

    У меня в опере нифига не работает, только в мозилле. Да и на том спасибо. А вообще банк говённый. Единственное что у них кул – это банковский перевод за 10 руб. А в остальном совок.

  11. На днях получил от авангарда его величество Электронную Цифровую Подпись! (фактически флешка). Подписывание работает только в мозилле, в опере нифига. Да и на том спасибо.

  12. Волшебно. А у ситибанка например – через просто HTTPS сайт все делается. Что через винды что через линукс. И никаких горбатых джав и виндовых троянов делающих неизвестно что. Вот этим и отличается совок от больших цивилизованных компаний.

    1. Не надо только сказок про ситибанк. Это такая жопа, что простите.

  13. А-а-а-а-а, Вы победили Авангардовский интернет-банкинг! С ума сойти! Почему я не нашел Ваш блог раньше, когда это было еще актуально?
    Только вот насчет “Авангард и его интернет-банкинг действительно хорош”… Позволю себе не согласиться.
    1. В условиях выпуска банковских карт в редакции от 22.09.2010 есть несколько очень неприятных для клиента пунктов. А именно: 3.6.8, 4.7, 7.1. По этой причине я отказался от использования Авангардовских карточек.
    2. Транспортные карты, ИМХО, лучше брать у “Мастербанка”. Они почти нахаляву выдают связку “MasterCard Standart + Visa Electron Transport” сроком действия 1 год. Если вдруг чо, потерять не так страшно. И тарифы конвертации у них много прозрачнее.
    3. До сих пор пользовался PSB-шным интернет-банкингом. Полностью меня устраивал, до тех пор, пока они не решили полностью переделать его интерфейс. Теперь вот, по всей видимости, переметнусь или на Авангард, или еще куда. Присматриваюсь к СБ-банку и к Тинькову.
    И еще. Есть пожелание. Может быть, настроите зеркалирование на ya.ru посредством экспорта RSS? Тогда можно будет Вас зафрендить, и я не пропущу свежих новостей из вашего блога.

    1. 1. В условиях выпуска банковских карт в редакции от 22.09.2010 есть несколько очень неприятных для клиента пунктов. А именно: 3.6.8, 4.7, 7.1. По этой причине я отказался от использования Авангардовских карточек.

      3.6.8 – стандартная формулировка, однако она не запрещает оспаривать действия мошенников. Хотя, вероятно, она противоречит законодательству. Очень уж там категорично некоторые вещи сформулированы.
      Оспаривать транзакции в авангарде не приходилось, поэтому ничего сказать не могу о том, как работает их СБ и насколько они доброжелательны в случае проблем.
      4.7 – совершенно нормально, они просто не прячут комиссию платежной системы в обменный курс.
      7.1 – что именно там пугает?

      2. Транспортные карты, ИМХО, лучше брать у “Мастербанка”. Они почти нахаляву выдают связку “MasterCard Standart + Visa Electron Transport” сроком действия 1 год. Если вдруг чо, потерять не так страшно. И тарифы конвертации у них много прозрачнее.

      Visa Electron Транспортная – действительно удобная вещь, если они не берут денег за ее обслуживание (обычно электрон/маестро бесплатные).
      Но в моем случае авангард мастеркард стандарт метро тоже бесплатная (начиная со второго года).
      Плюс у авангарда подкупило, что заявление оформляется через интернет и приезжать в офис надо только за самой картой.
      И офисов сильно больше чем у Мастербанка.
      Кстати, когда оформлял карту, попробовал еще заказать в Банке Москвы карту через инет. Очень понравился их дружелюбный сервис: через 2 дня пришло письмо: “Статус Вашего заявления на получение кредита изменен на “Возвращен на доработку” (Возврат на доработку).” И тишина.

    2. И еще. Есть пожелание. Может быть, настроите зеркалирование на ya.ru посредством экспорта RSS? Тогда можно будет Вас зафрендить, и я не пропущу свежих новостей из вашего блога.

      Неужели ya.ru не позволяет подключать произвольный rss?
      Если честно, ломает. У меня была когда-то почта gq@yandex.ru от которой я забыл пароль, поэтому зарегать gq.ya.ru не могу. А другие не охота.

  14. А кто нибудь пробовал подписывать в debian/ubuntu amd64?
    у меня ubuntu 10.04 amd64, плагин сановский из партнёрского репозитория.
    Плагин загружается но выдаёт сообщение “Не удалось получить данные от сервера”
    В консоле
    [12.10.2010 13:26:10] info: Download data from servlet
    network: Connecting https://www.avangard.ru/ibAvn/download?file=avn_clb_sign with proxy=DIRECT
    network: Connecting http://www.avangard.ru:443/ with proxy=DIRECT
    network: Connecting https://www.avangard.ru/ibAvn/download?file=avn_clb_sign with cookie “JSESSIONID=xxxxxxxxxxxxxxxxxx.xxxxxxx.1; oracle.uix=0^^GMT+4:00; userid=XXXXXXX-XXXX-XXXX-0000-000000000; JSESSIONID=xxxxxxxxxx_; wb.remoteAddr=11.22.33.44; wb.referer=; WB.IsUserLogged=false; WB.UserName=anonymous; IDHTTPSESSIONID=XXXXXXXX; xscroll-faces/pages/transfers/outside_transfers/outside_transfer_sign.jspx=0:123456789; yscroll-faces/pages/transfers/outside_transfers/outside_transfer_sign.jspx=0:123456789”
    network: Server https://www.avangard.ru/ibAvn/download?file=avn_clb_sign requesting to set-cookie with “JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX0.1; path=/ibAvn”
    java.lang.NullPointerException
    at java.lang.String.(String.java:515)
    at avn.applet.util.Downloader.download(Downloader.java:48)
    at avn.applet.engine.SigningDocuments.downloadData(SigningDocuments.java:152)
    at avn.applet.engine.SigningDocuments.run(SigningDocuments.java:312)
    at java.lang.Thread.run(Thread.java:619)

  15. Да, у меня тоже Ubuntu 10.04 amd64. С сановским плагином все работает.

  16. блин, а дейcтвительно кривая поделка в виде exe, а ява только способ доставки. У меня даже под виндой не работало, т.к. ломилось создать папку в корне диска С, прав на что у пользователя нет (Win2003 терминалсервер).
    Позвонил в техподдержку, сменили диск С на диск Х (сетевая папка пользователя монтирующаяся при входе)
    Спасибо за статью!

    1. Спамеры такие спамеры =)
      Даже умудряются текст заметки глазами пробежать. Сколько за такие комменты платят?

  17. Проапдейтившись на Debian Wheezy, решил перейти на рекомендуемые OpenJDK + IcedTea plugin. Пришлось ручками настраивать $HOME/.java.policy, т.к. банковский applet почему-то (из-за сертификата?) не хочет работать в привилегированном режиме.
    Получилось как-то так, (надеюсь движок сайта не расколбасит пример):
    grant codeBase “https://www.avangard.ru/ibAvn/-” {
    permission java.lang.RuntimePermission “getProtectionDomain”;
    permission java.util.PropertyPermission “user.home”, “read”;
    permission java.io.FilePermission “/home/user/.sccsp”, “read”;
    permission java.security.SecurityPermission “putProviderProperty.SC”;
    permission java.security.SecurityPermission “insertProvider.SC”;
    permission java.util.PropertyPermission “ru.signalcom.cms.debug”, “write”;
    permission java.util.PropertyPermission “user.language”, “write”;
    permission java.io.FilePermission “/home/user/avn_clb/-“, “read”;
    permission java.security.SecurityPermission “removeProvider.SC”;
    };
    Может, оно и к лучшему…

    1. Не хвататет, нужно добавить еще строки:

      permission java.io.FilePermission “/media”, “read”;
      permission java.security.SecurityPermission “removeProviderProperty.SC”;
      permission java.security.SecurityPermission “setProperty.SC”;
      permission java.security.SecurityPermission “getProperty.SC”;

  18. Кстати, там теперь не только “полностью java” но и есть возможность получить карту, которая генерирует одноразовые коды на дисплее.
    После этого вся джава с ЭЦП на флэшке становится ненужной.

Leave a Reply

Your email address will not be published. Required fields are marked *