Инсталация на драйвери за четец и смарт карта в Linux
Инсталиране на драйвер за четеца
Всички четци, предлагани от Инфонотари EАД, имат драйвери за Linux, които могат да се изтеглят от сайта на производителя им - OmniKey или ACS. В някои случаи тези драйвери могат да се инсталират директно чрез пакетната система на вашата дистрибуция.
Инсталация на PC/SC
Независимо от модела на вашия четец, ще трябва да инсталирате пакета pcscd. Това е демонът, чрез който програмите работят с четеца и съответно със смарт картата. След инсталация на нов драйвер за четец трябва да рестартирате pcscd. Ако инсталирате драйверите от пакет, той най-вероятно ще рестартира демона.
При някои дистрибуции заедно с инсталацията на pcscd се инсталира и алтернативният демон за управление на четците - openct. За коректна работа на четеца ще трябва да го деинсталрате или, ако това не може да стане, без да се премахне и pcscd, да му забраните да се стартира.
Видове четци
OmniKey
За да използвате пълноценно четците за смарт карти на OmniKey под Linux, ще трябва да инсталирате официалния драйвер на OmniKey вместо включения в повечето дистрибуции libccid. Можете да го изтеглите от техният сайт или от сайта на Инфонотари.
След това трябва да рестартирате демона с командата sudo /etc/init.d/pcscd restart. В случай че версията на pcscd е 1.6 или по-нова, демонът често е настроен да се стартира в момента, в който някоя програма се опита да се свърже с четеца вместо при стартиране на компютъра. В този случай може да го спрете с командата killall pcscd и да рестартирате програмите, които го ползват (Firefox, Thunderbird, Smart Card Manager).
Понеже драйверът не може да работи с права на обикновен потребител, трябва да промените настройките на pcscd, така че да се стартира с компютъра. В случай че използвате Ubuntu 11.04 или по-нова версия това става с промяна на 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 /etc/init.d/pcscd start.
В случай че след инсталацията на драйвера на OmniKey все още получавате грешки при използване на удостоверението си, ще се наложи да премахнете пакета 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.
По-трудният, но и по-коректен начин за справяне с проблема, е с текстов редактор да премахнете от файла /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist описанието на вашия четец. За OmniKey 6121 ifdVendorID e 076b, ifdProductID e 6622, a ifdFrendlyName e „OmniKey CardMan 6121“. За OmniKey 3021 ifdVendorID e 076b, ifdProductID е 0x3021, а ifdFrendlyName е „OMNIKEY CardMan 3x21“. Това е и единственият вариант, при който може да ползвате едновременно четците на OmniKey и други ccid съвместими четци. Ако по този начин деактивирате libccid, имайте предвид, че при следващото му обновяване промените по конфигурационния му файл ще бъдат загубени.
За да проверите кой точно драйвер използва pcscd, трябва да го пуснете в debug режим с параметри -fd. Например в Ubuntu това може да стане по този начин - sudo /usr/sbin/pcscd -f. В изхода от тази команда би трябвало да имате нещо подобно на това:
Ако не се появи този надпис, значи драйверът на OmniKey не се зарежда.
ACS
ACR38U и някои варианти на ACR38T не са CCID съвместими, но за тях също има свободен драйвер, който може да намерите на сайта на производителя или в директория Drivers/Linux/ACS на диска. Те също са включени в Debian и Ubuntu, като името на пакета е libacr38u.
ACR 38C
Ако вашият четец е означен с ACR38C-SPC-R от долната си страна или има надпис SIMLector 38T от вътрешната страна на капачето, то той е CCID съвместим и се поддържа от libccid. Най-вероятно пакетът, съдържащ този драйвер, се казва libccid или само ccid.
Ако не сте сигурни кой точно е модела на вашият четец може да го проверите чрез командата lsusb.
- ACR 38U се докладва по следният начин:
072f:9000 Advanced Card Systems, Ltd ACR38 AC1038-based Smart Card Reader
- За CCID версията се изписва следното:
072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader
Инсталиране на драйвери за смарт карта
В зависимост от това, каква е вашата карта, се използва различен софтуер. Моделът на картата ви е изписан на персоналните права за достъп, заедно с ПИН и АИН кодовете. В случай че за модел пише „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 липсва или е по-стара версия, ще се наложи да го изтеглите от сайта на проекта и да го компилирате ръчно.
Ако използвате версия 0.11 на opensc, след инсталацията е препоръчително да го настроите да ползва само pcsc за връзка с четеца. Това става, като в конфигурационния файл (/etc/opensc/opensc.conf) промените реда:
# reader_drivers = openct, pcsc, ctapi;
на
reader_drivers = pcsc;
Това не е необходимо за версии след 0.12.0. В тях по подразбиране се работи с четците само през pcsc.
На страница Работа с OpenSC можете да намерите кратка инструкция за извършване на най-често използваните операции с OpenSC.
Картите T&S DS/2048 (L) не могат да се използват с OpenSC, а само с Bit4id Universal Middleware! В случай че трябва да използвате паралелно CardOS и T&S DS/2048 карти трябва да редактирате конфигурационният файл на OpenSC, както е описано в статията за Работа с OpenSC.