Инсталация на драйвери за четец и смарт карта в Linux

от Infonotary
Направо към: навигация, търсене

Инсталиране на драйвер за четеца

Всички четци, предлагани от Инфонотари EАД, имат драйвери за Linux, които могат да се изтеглят от сайта на производителя им - OmniKey или ACS. В някои случаи тези драйвери могат да се инсталират директно чрез пакетната система на вашата дистрибуция.

Инсталация на PC/SC

Независимо от модела на вашия четец, ще трябва да инсталирате пакета pcscd. Това е демонът, чрез който програмите работят с четеца и съответно със смарт картата. След инсталация на нов драйвер за четец трябва да рестартирате pcscd. Ако инсталирате драйверите от пакет, той най-вероятно ще рестартира демона.

Warning.jpg При някои дистрибуции заедно с инсталацията на pcscd се инсталира и алтернативният демон за управление на четците - openct. За коректна работа на четеца ще трябва да го деинсталирате или ако това не може да стане без да се премахне и pcscd, да му забраните да се стартира.

Видове четци

OmniKey

CardMan6121.gifCardMan3021.png

За да използвате пълноценно четците за смарт карти на OmniKey под Linux, ще трябва да инсталирате официалния драйвер на OmniKey вместо включения в повечето дистрибуции libccid.

Ако използвате съвместима с Debian дистрибуция като Ubuntu или Mint може да инсталирате драйверът директно от нашето нашето хранилище. Името на пакета е pcsc-omnikey. В случай че инсталирате този пакет, може да продължите директно с инсталация на драйверите за смарт карта.

Ако ползвате друга дистрибуция може да изтеглите стандартният инсталатор от техният сайт или от сайта на Инфонотари. Преди да инсталирате драйвера задължително трябва да сте инсталирали pcscd и да сте деинсталирали или забранили openct.

В изхода на командата lsusb тези четци се появяват по следните начини:

ID 076b:6622 OmniKey AG CardMan 6121
ID 076b:3021 OmniKey AG CardMan 3021

Всеки четец с ID започващо с 076b работи със същият драйвер.

Инсталация на драйвера

HID Global не предоставят стандартни инсталационни пакети за Linux, така че за да инсталирате драйвера трябва да изпълните следните стъпки:

  1. Разархивирайте изтегленият tar.gz пакет в домашната папка. Това е папката с името на вашият потребител.
  2. Отворете терминал и сменете работната папка с тази получена при разархивирането. За 64 битовата версия командата е cd ~/ifdokccid_linux_x86_64-v4.1.5, а за 32 битовата е cd ~/ifdokccid_linux_i686-v4.1.5. В случай че сте го разархивирали в друга папка, може да напишете в терминала „cd “, да хванете папката от файловият мениджър и да я завлечете и пуснете върху терминала. Така ще получите правилната команда.
  3. Изпълнете командата sudo ./install за да го инсталирате или su -c ./install ако не използвате sudo.
  4. Рестартирайте демона с командата sudo service pcscd restart.
Настройване на pcscd да се стартира със системата

В случай че използвате Ubuntu 11.04, 11.10 или 12.04 ще трябва да настроите pcscd да се стартира заедно със системата. Ако използвате друга дистрибуция или друга версия на Ubuntu преминете на следващата секция - премахване на libccid. В тези версии на Ubuntu демонът е настроен да работи като обикновен потребител, но драйверът на HID Global не може да работи по този начин. Това става с промяна на init скрипта на pcscd (/etc/init.d/pcscd). Може да отворите този файл с командата sudo gedit /etc/init.d/pcscd. Трябва да намерите тази секция:

# DO NOT start the daemon on startup
# comment the line to have the same behavior as in version < 1.6.0
exit 0

и да я сложите # в началото на реда „exit 0“:

# DO NOT start the daemon on startup
# comment the line to have the same behavior as in version < 1.6.0
#exit 0

След тази промяна трябва да спрете всички работещи копия на pcscd и да го пуснете от стартиращият скрипт. В Ubuntu това се постига с последователното пускане на следните команди sudo killall pcscd и sudo service pcscd start.

Премахване на libccid

В повечето дистрибуции заедно с pcscd се инсталира и свободният драйвер libccid. Той не работи коректно с тези четци, така че ако не използвате четец, който работи само чрез libccid, трябва да го деинсталирате. За да не бъде премахнат и демонът при деинсталирането на libccid, може да инсталирате някой от другите пакети, предоставящи pcsc-ifd-handler - например libacr38u. Точната команда за Ubuntu е sudo apt-get install libacr38u && sudo apt-get remove libccid.

Ако в дистрибуцията, която ползвате, не може да се премахне libccid, без да се премахне pcscd, ще трябва да премахнете или изключите драйвера ръчно. Това е ситуацията с Red Hat, Fedora и базираните на тях дистрибуции.

По-деструктивният вариант е просто да изтриете драйвера от папката на pcscd. Във Fedora той е /usr/lib/pcsc/drivers/ifd-ccid.bundle или /usr/lib64/pcsc/drivers/ifd-ccid.bundle в x86_64 версията. Със следната команда може да го преместите в домашната папка - H=$HOME; sudo mv /usr/lib/pcsc/drivers/ifd-ccid.bundle $H.

В случай че искате да ползвате и друг четец, който работи само чрез libccid, не може да го деинсталирате. В този случай ще трябва да премахнете описанието на четците OmniKey от конфигурационният файл на libccid - /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist. Най-лесният начин да го направите е да замените в низа 0x076B с 0xFFFF. Ако по този начин деактивирате libccid, имайте предвид, че при следващото му обновяване промените по конфигурационния му файл ще бъдат загубени.

Проверка на инсталацията

За да проверите кой точно драйвер използва pcscd, трябва да го пуснете в debug режим с параметри -fd. Например в Ubuntu това може да стане по този начин - sudo /usr/sbin/pcscd -f. В изхода от тази команда би трябвало да имате нещо подобно на това:

HID HID Global OMNIKEY CCID IA32 v3.7.0 eusupport@hidglobal.com

Ако не се появи този надпис, значи драйверът на OmniKey не се зарежда. Най-вероятната причина за това е че имате инсталирано libccid или openct. В повечето случаи премахването на тези пакети решава проблема.

ACS

ACR 38U.pngACR 38T.png

ACR38U и някои варианти на ACR38T не са CCID съвместими, но за тях също има свободен драйвер, който може да намерите на сайта на производителя или в директория Drivers/Linux/ACS на диска. Те също са включени в Debian и Ubuntu, като името на пакета е libacr38u.

В изхода на командата lsusb тези четци се появяват по следният начин:
ID 072f:9000 Advanced Card Systems, Ltd ACR38 AC1038-based Smart Card Reader
ACR 38C

Ако вашият четец е означен с ACR38C-SPC-R от долната си страна, има надпис SIMLector 38T от вътрешната страна на капака на смарт картата или надпис mLector-S под капака на USB порта то той е CCID съвместим и се поддържа от libccid. Най-вероятно пакетът, съдържащ този драйвер, се казва libccid или само ccid. Освен чрез libccid, тези четци могат да работят и чрез поддържаният от производителят им драйвер - libacsccid1. Той е свободен софтуер и е пакетиран в много дистрибуции. В случай че освен този четец ви се налага да използвате и четец OmniKey по-добре да използвате libacsccid1 вместо libccid.

За тези четци lsusb изписва следното:
ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader

Инсталиране на драйвери за смарт карта

Warning.jpg В зависимост от това, каква е вашата карта, се използва различен софтуер. Моделът на картата ви е изписан на персоналните права за достъп, заедно с ПИН и АИН кодовете. В случай че за модел пише „T&S DS/2048 (L)“, трябва да инсталирате bit4id-ipki от папката Install/Linux на инсталационния диск или от DEB и RPM хранилищата на Инфонотари. Ако моделът на картата е „CardOS V4.3B (C)“, ще трябва да инсталирате OpenSC и да го конфигурирате, както е описано в следващата глава.

В случай че персоналните права за достъп до смарт картата не са налични, може да определете модела на картата по следните начини:

  • Чрез pcsc_scan. Тази програма показва какви четци и карти са включени и информация за тях. В Debian и Ubuntu тя се съдържа в пакета pcsc-tools. Ако след като я пуснете изпише Siemens CardOS V4.3B, трябва да използвате OpenSC. Ако изпише Universita' Degli Studi di Torino (Infocert), трябва да инсталирате bit4id-ipki.
  • Директно чрез pcscd. За целта трябва да спрете pcscd, ако работи и да го пуснете в Debug режим по следният начин - sudo pcscd -fd 2>&1 | grep "Card ATR". Ще се изпише по един ред за всяка намерена карта. Ако се изпише „Card ATR: 3B F2 18 00 02 C1 0A 31 FE 58 C8 08 74“, вашата карта е CardOS V4.3B и трябва да инсталирате OpenSC. В случай че изхода е „Card ATR: 3B FF 18 00 FF 81 31 FE 55 00 6B 02 09 03 03 01 11 01 43 4E 53 11 31 80 8C“, картата e T&S DS/2048 и трябва да инсталирате bit4id-ipki.

Инсталиране на OpenSC

В случай че ползвате карта CardOS V4.3B, за да ползвате удостоверението си за електронен подпис чрез OpenSC, ще трябва да си инсталирате версия 0.11.4 или по-нова. Най-добре да ползвате пакет от вашата дистрибуция. Ако в нея OpenSC липсва или е по-стара версия, ще се наложи да го изтеглите от сайта на проекта и да го компилирате ръчно.

На страница Работа с OpenSC можете да намерите кратка инструкция за извършване на най-често използваните операции с OpenSC.

Warning.jpg Картите T&S DS/2048 (L) не могат да се използват с OpenSC, а само с Bit4id Universal Middleware! В случай че трябва да използвате паралелно CardOS и T&S DS/2048 карти трябва да редактирате конфигурационният файл на OpenSC, както е описано в статията за Работа с OpenSC.

Warning.jpg OpenSC 0.16 и следващите версии разчитат драйверът на четецът да предоставя допълнителна информация за възможностите на хардуера в противоречие с PC/SC стандартът. Поради тази причина в случай че използвате OpenSC с OmniKey четец трябва да зададете ръчно максималната дължина на съобщението в конфигурационният му файл. В секцията reader_driver pcsc трябва да се разкоментират редовете за max_send_size и max_recv_size и да се зададе и двете стойности да са поне 300 байта:

   reader_driver pcsc {
       max_send_size = 1024;
       max_recv_size = 1024;

Повече информация за проблемът може да прочетете в докладът за проблем на OpenSC и в съответната част от спецификацията на PC/SC.

Тестване на инсталацията

В случай че имате проблем с вашият КЕП, за по-лесно установяване на проблема може да използвате следната програма:

Програмата поддържа директно изпращане на информацията към Инфонотари. След успешно изпращане, тя ще покаже номер, който ще трябва да предоставите на колегите от поддръжката за да могат да видят резултатите от теста. В случай че пращането е неуспешно или нямате връзка с Интернет, може да запишете резултата от теста във файл и да го изпратите на support@infonotary.com.

Желателно е четецът с картата да са включени в компютъра при пускането на теста.

За да се покаже потребителският интерфйс на програмата трябва да имате инсталиран някой от следните пакети - python-tk за Debian/Ubuntu, tkinter за Fedora/RedHat или zenity. Ако не са инсталирани тези пакети, програмата ще работи, но ще може да се използва само от терминал.