Alfabank eToken

Материал из ALT Linux Wiki

При настройке рабочего места в ALT linux была использована статья http://forum.rcdesign.ru/blogs/349/blog6448.html
Установка производилась на платформе i586.

Состав ПО

ALT Linux Branch 5.1 (2010-10-03)
    java-1.6.0-sun-1.6.0.20-alt2
    mozilla-plugin-java-1.6.0-sun-1.6.0.20-alt2
    firefox-3.6-3.6.10-alt0.20100909.M50P.1
    pcsc-lite-1.5.5-alt1
iaikPkcs11Wrapper1.2.17.zip (источник: http://jce.iaik.tugraz.at/ )
etokenpkiclientlinux50sp1_2009-08-18.zip
   (источники: http://www.aladdin-rd.ru/ http://www.aladdin.com/)

Токен

Токен определяется ядром так:

usb 2-2: New USB device found, idVendor=0529, idProduct=0600
usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-2: Product: Token 4.28.1.0 2.7.195
usb 2-2: Manufacturer: Aladdin Knowledge Systems Ltd.

Вывод lsusb:

Bus 002 Device 002: ID 0529:0600 Aladdin Knowledge Systems eToken Pro 64k (4.2)

Установка pkiclient-5.00.28-0.i386.rpm

Пакет находится в архиве etokenpkiclientlinux50sp1_2009-08-18.zip в соответствующем каталоге, его надо извлечь и скопировать, например, в /tmp.

apt-get install pkiclient-5.00.28-0.i386.rpm

Пакет установится, но есть проблема. В пакете содержится несколько библиотек Qt 4 (libQtCore.so.4.2.3, libQtGui.so.4.2.3, libQtXml.so.4.2.3), а в /etc/ld.so.conf.d устанавливается файл wwwwetoken-ld.conf, содержащий путь "/usr/lib/eToken". Это приводит к тому, что пакеты, ALT Linux, которые используют Qt 4, перестают работать. Разработчикам из Aladdin проблема известна (я открывал [Ticket#2010093010000149], при этом мне сказали, что уже знают о проблеме), но дистрибутивы ALT Linux не входят в число поддерживаемых, так что неизвестно, что и когда сделают. Самостоятельно проблему можно решить с использованием скриптов-враперов:

  • Удаляем/комментируем путь в wwwwetoken-ld.conf.
perl -p -i -e "s/^/#/" /etc/ld.so.conf.d/wwwwetoken-ld.conf

не забудьте запустить ldconfig (достаточно без параметров)

  • Переименовываем исполняемые файлы, которым нужны библиотеки из /usr/lib/eToken
cd /usr/bin
mv etProps etProps.bin
mv PKIMonitor PKIMonitor.bin
  • Создаём скрипты etProps и PKIMonitor
touch /usr/bin/etProps /usr/bin/PKIMonitor
chmod 755 /usr/bin/etProps /usr/bin/PKIMonitor

содержимое скриптов идентичное:

#!/bin/bash

export LD_LIBRARY_PATH=/usr/lib/eToken${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
exec $0.bin $@ &

Установка библиотек из iaikPkcs11Wrapper1.2.17.zip

Из этого архива нам требуется java/lib/iaikPkcs11Wrapper.jar и libpkcs11wrapper.so, последних в архиве несколько штук, на разные вкусы, я использовал из native/platforms/linux/debug. iaikPkcs11Wrapper.jar можно положить в /usr/lib/jvm/jre/lib/ext/, libpkcs11wrapper.so - в /usr/lib.

Тут есть 2 подводных каменя.

1. В этой Java-библиотеке предполагается, что модуль pkcs11 называется eTpkcs11, а не libeTPkcs11.so, так что

cd /usr/lib
ln -s libeTPkcs11.so eTpkcs11

2. /usr/lib/jvm/jre - это символьная ссылка, которая меняется при обновлении Java, так что iaikPkcs11Wrapper.jar надо не забывать перекладывать в этом случае.


Дополнение. При установке 64-х битной версии pkiclient, чтобы все заработало, нужно в дополнение к вышесказанному подложить в /usr/lib64 64-х битную-же версию библиотеки libpkcs11wrapper.so (она находится в iaikPkcs11Wrapper1.2.17.zip в native/platforms/linux_х64/debug) Возможно в этом случае не обязательно подкладывать в /usr/lib 32-х разрядную версию - этого я не проверял.

Настройка прав для Java

для тех пользователей, которые будут работать с Альфа-банком, в домашний каталог следует положить файл .java.policy
(В таком виде политику оставлять не следует):

grant {
permission java.security.AllPermission;
};

Если все заработало, можно прописать кошерную политику (адаптировано для Linux из каментов к статье):

grant {
permission java.lang.RuntimePermission "loadLibrary.pkcs11wrapper";
permission java.io.FilePermission "/usr/lib/libpkcs11wrapper.so", "read";
permission java.io.FilePermission "/usr/lib/jvm/jre/lib/ext/iaikPkcs11Wrapper.jar", "read";
};

Для ее отладки активируем java-консоль и заходим в альфа-клиент из Firefox. Мне, например, пришлось создать символические ссылки в каталогах /usr/lib/jvm/jre/lib/ext/ и /usr/lib/jvm/jre/lib/ext/i386/ на /usr/lib/libpkcs11wrapper.so.

Эпилог

Теперь можно начинать работать с Альфа-банком с рабочей станции с ALT Linux. Остаётся одна, пока не решённая, проблема: не работает генерация сертификатов, сертификаты придётся генерировать из-под Windows. В основном, это ежегодная операция.

Комментарий от клиента Альфа-банка: к сожалению, да, придется из-под Виндовс, причем желательно не виртуальной. Наверное, можно и эту проблему решить, но дается только одна попытка :)

Эпилог 2 (грустный финал)

Оказалось, что, всё же, полноценно работать нельзя. Не получается подписать документ при попытке сделать платёж. Плюс, в какой-то момент, появилась непонятная ошибка при закрытии Java-приложения. В итоге открыт новый счёт в банке, который использует платформу Bifit. Собственно автор статьи с http://forum.rcdesign.ru давно сделал то же самое. Жаль, что та статья не попалась до открытия счёта в Альфабанке.

Комментарий от клиента Альфа-банка: К счастью, это не так: на самом деле, полноценно работать можно. Все прекрасно подписывается. Другое дело, что в самом банк-клиенте, при подписывании, нужно МЫШКОЙ нажать КНОПКУ. Если нажать ENTER на клавиатуре - происходит нажатие какой-то другой кнопки в форме ввода, передаются неверные данные и документ не подписывается.

Послесловие (чья-то надежда ?)

Подводный камень, связанный с обновлением Java и переименованием символьной ссылки, обнаружен при удалении лишних пакетов после закрытия счёта. Видимо, какая-то часть последних проблем связана с этим. Проверить я уже не могу, однако безуспешная попытка генерации сертификата делалась при правильном расположении iaikPkcs11Wrapper.jar.

Комментарий от клиента Альфа-банка: При обновлении JAVA новые библиотеки ставятся в новый каталог, типа /usr/lib/jvm/java-XXXX. Пакеты от pksc при этом автоматически не переносятся, и по сути система перестает их видеть. Нужно просто скопировать их в новое место.

Ссылки

http://www.etokenonlinux.org/et/FAQ