УЕП (UES) от Infonotary на Fedora 16 и Firefox 7/8

сряда, ноември 23rd, 2011

От дълго време се каня да си извадя електронен подпис, но все го отлагах. Напоследък обаче се стигна до момент, в който това стана наложително. Понеже естествено, ще го ползвам под Linux направих кратко проучване първо онлайн, а след това и сред познати. Имаше положителни мнения както за Инфонотари, така и за Банксервиз. Аз се спрях на първите по две причини – на пръв поглед по-добрата документация, и нещо доста по-тривиално, по-големият брой офиси на Инфонотари, в случая имаше такъв точно срещу моя офис.

От това, което прочетох се надявах да ми се падне Omnikey четец, но в избраният от мен офис на ЦКБ такива нямаше – единствената опция беше ACS. Понеже напоследък съм мързелив, а и ми трябваше спешно рискувах и го взех. Последното след попълването на един тон документация от момичето в офиса, което беше леко неориентирано, изглежда нямаше кой знае какъв опит с издаване на сертификати, но с малко помощ от приятели (с цената от две телефонни обаждания) все пак се справи.

И така, за мен остана да изчакам края на работния ден, да се прибера и да видя какво ще се получи. Ами смело мога да заявя, че четецът работи out of the box с ccid драйверът по подразбиране.

pcscd сървисът е стартиран:

[Nick@Pegasus ~]$ systemctl status pcscd.service
pcscd.service - PC/SC Smart Card Daemon
Loaded: loaded (/lib/systemd/system/pcscd.service; disabled)
Active: active (running) since Tue, 22 Nov 2011 20:56:10 +0200; 2h 9min ago
Main PID: 8758 (pcscd)
CGroup: name=systemd:/system/pcscd.service
└ 8758 /usr/sbin/pcscd -f

Исталирани са следните пакети:

[Nick@Pegasus ~]$ yum list pcsc-*
Installed Packages
pcsc-lite.x86_64                        1.7.4-6.fc16                  @fedora
pcsc-lite-ccid.x86_64                   1.4.5-1.fc16                  @fedora
pcsc-lite-devel.x86_64                  1.7.4-6.fc16                  @fedora
pcsc-lite-libs.x86_64                   1.7.4-6.fc16                  @fedora
[Nick@Pegasus ~]$ yum whatprovides pcsc-lite
pcsc-lite-1.7.4-6.fc16.x86_64 : PC/SC Lite smart card framework and applications
Repo        : fedora
[Nick@Pegasus ~]$ yum whatprovides pcsc-lite-ccid
pcsc-lite-ccid-1.4.5-1.fc16.x86_64 : Generic USB CCID smart card reader driver
Repo        : fedora

Ето и как се разпознава самият четец (dmesg output):

[787202.753102] usb 1-1.5.4: new full speed USB device number 13 using ehci_hcd
[787202.841264] usb 1-1.5.4: New USB device found, idVendor=072f, idProduct=90cc
[787202.841267] usb 1-1.5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[787202.841269] usb 1-1.5.4: Product: CCID USB Reader
[787202.841270] usb 1-1.5.4: Manufacturer: ACS
[789782.064529] usb 1-1.5.4: USB disconnect, device number 13

И малко по-подробно (lsusb -vd):

lsusb -vd 072f:90cc
 
Bus 001 Device 015: ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x072f Advanced Card Systems, Ltd
  idProduct          0x90cc ACR38 SmartCard Reader
  bcdDevice            1.00
  iManufacturer           1 ACS
  iProduct                2 CCID USB Reader
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           93
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass        11 Chip/SmartCard
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      ChipCard Interface Descriptor:
        bLength                54
        bDescriptorType        33
        bcdCCID              1.00
        nMaxSlotIndex           0
        bVoltageSupport         7  5.0V 3.0V 1.8V
        dwProtocols             3  T=0 T=1
        dwDefaultClock       4000
        dwMaxiumumClock      4000
        bNumClockSupported      0
        dwDataRate          10752 bps
        dwMaxDataRate      344100 bps
        bNumDataRatesSupp.      0
        dwMaxIFSD             247
        dwSyncProtocols  00000000
        dwMechanical     00000000
        dwFeatures       00010030
          Auto clock change
          Auto baud rate change
          TPDU level exchange
        dwMaxCCIDMsgLen       271
        bClassGetResponse      00
        bClassEnvelope         00
        wlcdLayout           none
        bPINSupport             0
        bMaxCCIDBusySlots       1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              16
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)

Моделът на картата ми е T&S DS/2048 (L), което налага инсталирането на два допълнителни пакета от хранилището на Инфонотари, a именно – bit4id-ipki и infonotary-scardmanager.

Остава само настройката на browser-а, който в случая е firefox. Сертификатът може да се инсталира директно от линка изпратен от Инфонотари чрез e-mail, а за улеснение на конфигурацията може да се добави следният firefox add-on – InfoNotary Configurator for Mozilla, . Ако при отварянето на тестовият линк (тестът може да бъде направен и от Preferences –> Signature Test на добавката на Инфонотари), отговорът е Data Accepted, то всичко е наред и можем да подписваме на воля.

Допълнителна информация:

Загубих доста време да разбера какъв е точният модел на четеца. Както може да се види от output-а по-горе то се разпознава като ACR38. На капачето му обаче е изписано ACR38T, а според една от техническите спецификации на сайта на производителя, а и според външният му вид, то това е ACR38DT. Според същата спецификация, въпросният четец работи с ccid, само ако е с firmware 1.12, и явно моят е такъв. В противен случай вероятно ще се наложи инсталирането на vendor драйверите.

Ето как изглежда на практика:

Полезни линкове (дадени са и в текста по-горе):

  1. Използване на квалифициран електронен подпис в Mozilla Firefox за Linux
  2. Използване на хранилищата на InfoNotary
  3. InfoNotary Configurator for Mozilla
  4. Инсталация на драйвери за четец и смарт карта в Linux

Умишлено не посочвам линк към „Инсталация на драйвери за четец и смарт карта в Linux“. Въпреки, че статията е относително актуална, то в нея има някои неточности, които могат да доведат до объркване. Освен това е и доста Ubuntu ориентирана. Но това, не е кой знае какъв проблем, освен че имената на пакетите във Fedora са други.  Проблемът е друг, че по начинът, по който е написан краят на статията, може да се остане с впечатлението, че е нужно да се инсталира и OpenSC. Това не е необходимо! OpenSC, въпреки че разпознава правилно четеца, зарежда и използва CNS драйвера. Освен това, ACS липсва от списъкa с поддържаният от проекта хардуер, но пък е споменат в списъкът с поддържани устройства от CCID.

И така в резюме: ACS ACR38DT от Инфонотари работи под Fedora 16 с Firefox 7, без да е необходимо да се инсталират допълните драйвери за картовия четец.

Рдакция /24.11.2011/: Статията във wiki-то на Инфонотари е редактирана, и е доста по-точна в момента. Така че включвам и линк-а към нея.

Fedora 16 Verne

събота, ноември 12th, 2011

Във вторник излезе 16-тата версия на Fedora с кодово название Verne. За разлика от предната 15-та, този път има доста промени, подобрения и нови неща, като може би най-отличителните са Grub2, както и продължаващата миграция от SysV към systemd.  Ето и някои други заслужаващи внимание новости:

  • Chrony заменя ntpd като основен метод за синхронизация на време
  • ext4 отдавна е част от дистрибуцията, но сега ext4 драйвера се използва за монтирането и на ext2 и ext3 дялове.
  • 1000 System accounts – преместване на границата между потребителски и системни акаунти от UID/GID 500, на UID/GID 1000
  • Gnome 3.2
  • KDE 4.7
  • Много подобрения и добавени приложения свързани със виртуализацията и облачните услуги

Екипът на Fedora прави хубав жест с решението да посвети Verne  на големият Денис Ричи.

Повече подробности могат да бъдат намерени в Release Notes, Feature List и официалният анонс.

По стара лична традиция upgrade-нах от 15-та към 16-та версия посредством yum. Въпреки че не е сред официално препоръчваните начини за update, си остава най-удобният за мен. Процедурата е следната:

Импортиране на ключа:

rpm --import https://fedoraproject.org/static/A82BA4B7.txt

Update на yum:

yum update yum

Изчистване на кеш-а:

yum clean all

И самия update:

yum --releasever=16 --disableplugin=presto distro-sync

Имаше малко проблеми със счупени зависимости, та се наложи преди това да премахна:

yum -y remove kino, libnih, libmtp-hal

След това всичко мина гладко и можеше да се насладя на добрата работа на Artwork тима.

Verne

Kannel daily svn snapshot rpm

петък, октомври 28th, 2011

Currently the current kannel version in epel is 1.4.3 /which according to kannel.org is the latest stable release/. However if you want to use sqlbox and smppbox, the only option is to use svn. So I decided to build my custom kannel rpm by using the source tarball from the daily svn snapshot. My kannel.spec is based on the file from the epel rpm for 1.4.3 version. The changes are minimal:

--- kannel.epel.spec    2011-10-28 16:29:01.000000000 +0300
+++ kannel.spec 2011-10-28 16:31:48.000000000 +0300
@@ -1,18 +1,18 @@
 Summary: WAP and SMS gateway
 Name: kannel
-Version: 1.4.3
-Release: 5%{?dist}
+Version: 1.5.0
+Release: 20111028%{?dist}
 License: BSD
 Group: System Environment/Daemons
 URL: http://www.kannel.org/
-Source0: http://www.kannel.org/download/%{version}/gateway-%{version}.tar.bz2
+Source0: http://www.kannel.org/download/kannel-snapshot.tar.gz
 Source1: kannel.logrotate
 Source2: kannel.init
 Source3: kannel.conf
 Source4: gw-config
 # TODO: a corresponding configure.in patch could be upstreamable?
-Patch0: gateway-1.4.3-ssldetect.patch
-Patch1: gateway-1.4.1-typesh.patch
+#Patch0: gateway-1.4.3-ssldetect.patch
+#Patch1: gateway-1.4.1-typesh.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 BuildRequires: bison, byacc, flex, ghostscript
 BuildRequires: libxml2-devel, openssl-devel, zlib-devel, pcre-devel
@@ -69,9 +69,9 @@
 
 %prep
-%setup -q -n gateway-%{version}
-%patch0 -p1 -b .ssldetect
-%patch1 -p1 -b .typesh
+%setup -q -n kannel-snapshot
+#%patch0 -p1 -b .ssldetect
+#%patch1 -p1 -b .typesh
 %{__chmod} -c -x gwlib/html-entities.def # for -debuginfo, as of 1.4.3
 
@@ -147,6 +147,7 @@
 %{_bindir}/seewbmp
 %{_bindir}/wmlsc
 %{_bindir}/wmlsdasm
+%{_bindir}/decode_emimsg
 %{_sbindir}/*
 %{_mandir}/man?/*
 %attr(0750,kannel,kannel) %dir %{_var}/log/kannel/
@@ -164,6 +165,9 @@

I assumed that the two patches applied to version 1.4.3 are not necessary, because they probably are part of the svn code.

There was a build error on the first run:

RPM build errors:
Installed (but unpackaged) file(s) found: /usr/bin/decode_emimsg

so I had to add „%{_bindir}/decode_emimsg“ in the %files section.
The spec file expect the availability of the following files in the SOURCE directory: kannel.logrotate, kannel.init, kannel.conf, gw-config

The kannel.spec file can be found here.
The command used to build the rpm is:

rpmbuild -ba kannel.spec

Another way to do the trick:
http://www.blogalex.com/archives/23

Default to open: The story of open source and Red Hat

вторник, август 30th, 2011

CentOS 6.0 remote install via VNC

петък, юли 15th, 2011

Отдавна ми предстоеше една нова инсталация, но реших да изчакам излизането на CentOS 6. Голямо чакане падна, но в началото на седмицата чудото се случи. А днес успях да отделя и време за въпросната машина. За да не я вземам при мен, реших да заложа на netinstall директно в сървърното, но за съжаление Anaconda нещо не се разбра с конзолата на ATEN. Не ми се занимаваше да debug-вам какъв е проблема, a и нямаше как да ползвам text install понеже в CentOS 6 той е доста орязан и не може да се правят следните неща:

  • configuring advanced storage methods such as LVM, RAID, FCoE, zFCP, and iSCSI.
  • customizing the partition layout
  • customizing the bootloader layout
  • selecting packages during installation
  • configuring the installed system with firstboot
По този начин се наложи да се насоча към друг вариант – отдалечена инсталация посредством VNC, опция която е възможна с Anaconda. За тази цел обаче е нужно да имаме текущо инсталирана операционна система на машината, на която искаме да инсталираме. За мое щастие аз имах. И така:
  • Логваме се на машината и сваляме initrd и vmlinuz за новата версия, в случая 6.
cd /boot
curl http://centos.skknet.net/6.0/os/i386/images/pxeboot/vmlinuz -o vmlinuz.centos6.pxe
curl http://centos.skknet.net/6.0/os/i386/images/pxeboot/initrd.img -o initrd.img.centos6.pxe

Разбира се, може да използваме и друг произволен CentOS mirror. Както и x86_64 вместо i386, ако искаме да инсталираме 64bit версия на CentOS.

  • Update-ваме Grub (/boot/grub/menu.lst).
title Centos Remote Install (PXE)
root (hd0,0)
kernel /vmlinuz.centos6.pxe vnc vncpassword=PASSWD headless ip=IPADDR netmask=NETMASK gateway=GATEWAYIP dns=8.8.8.8 ksdevice=eth0 method=http://centos.skknet.net/6.0/os/i386 lang=en_US keymap=us
initrd /initrd.img.centos6.pxe

Където:

vnc
vncpassword={парола за достъп до vnc сървъра, не по-малка от 6 символа}
headless
ip={IP адрес на отдалечената машина}
netmask={мрежова маска на отдалечената машина}
gateway={default gateway на отдалечената машина}
dns={IP адрес на DNS сървъра}
ksdevice={използваният мрежов интерфейс}
method={URL до директорията съдържаща images/install.img}
lang={proper language code}
keymap={proper country code}

Трябва да се има предвид обаче, че настройките по-горе са специфични в зависимост от текущата инсталация, наличието на отделен /boot дял, естествено IP адреса и default GW, мрежовия интерфейс, дали линка към посочения mirror е активен и т.н.

  • Ако сме се уверили, че всичко това е наред, остава само да рестартираме машината:
shutdown -r now
  • Остава само да се свържем към нея:
vncviewer IPADDR:1

Допълнителна информация:

1. Redhat Magazine
2. Redhat Installation Guide

Stop ACTA