Alfabank eToken
При настройке рабочего места в 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 при этом автоматически не переносятся, и по сути система перестает их видеть. Нужно просто скопировать их в новое место.