Používanie eID 3.0 na nepodporovanej distribúcii - hard way

12.01 | 13:00 | Mirecove dristy | Miroslav Bendík

Dnešný blog bude o tom ako rozbehať eID klienta na oficiálne nepodporovanej distribúcii (alebo lepšie povedané na distribúcii, ktorá nie je úplnou vykopávkou).

CCID čítačka

Aktuálne vydávané čítačky sú plne kompatibilné s pcsc-lite. Stačí nainštalovať pcsc-lite a naštartovať službu pcscd ak nenaštartovala automaticky (napr. v prípade gentoo je nainštalované udev pravidlo, ktoré automaticky spustí službu po pripojení čítačky). Jej funkčnosť môžme skontrolovať príkazom pcsc_scan.

pcsc_scan

eID klient

Aplikáciu pre komunikáciu s čítačkou je možné stiahnuť na stránke ústredného portálu verejnej správy. Ja som konkrétne sťahoval balík pre Mint 18/19.

Aplikáciu som dal do samostatného adresára a potom rozbalil.

mkdir eid
cd eid
mv /cesta/k/Aplikacia_pre_eID_amd64_mint.tar.gz Aplikacia_pre_eID_amd64_mint.tar.gz
tar -xvzf Aplikacia_pre_eID_amd64_mint.tar.gz
ar x Aplikacia_pre_eID_amd64_mint.deb
tar -xvzf data.tar.gz

Následne skopírujeme aplikáciu na správne miesto (všetky príkazy pod rootom).

cp ./usr/bin/EAC_MW_klient /usr/bin/EAC_MW_klient
mkdir -p /usr/share/applications/
cp ./usr/share/applications/aplikacia-pre-eid.desktop /usr/share/applications/aplikacia-pre-eid.desktop
cp -R ./usr/lib/eac_mw_klient/ /usr/lib

Ďalej budeme potrebovať plugin do prehliadača. To vyriešime inštaláciou balíka disig-web-signer.

mkdir disig
cd disig
wget https://download.disigcdn.sk/cdn/products/websigner/disig-web-signer.mint_amd64.deb
ar x disig-web-signer.mint_amd64.deb
tar -xvJf data.tar.xz

Ako root skopírujeme obsah balíka:

mkdir -p /opt/
cp -R ./opt/disig/ /opt
mkdir -p /etc/chromium/native-messaging-hosts/
cp ./etc/chromium/native-messaging-hosts/sk.disig.websigner.1.0.7.java.json /etc/chromium/native-messaging-hosts/sk.disig.websigner.1.0.7.java.json
mkdir -p /etc/xdg/autostart/
cp ./etc/xdg/autostart/sk.disig.WebSigner.desktop /etc/xdg/autostart/sk.disig.WebSigner.desktop
mkdir -p /usr/lib/mozilla/native-messaging-hosts/
cp ./usr/lib/mozilla/native-messaging-hosts/sk.disig.websigner.1.0.7.java.json /usr/lib/mozilla/native-messaging-hosts/sk.disig.websigner.1.0.7.java.json
mkdir -p /usr/share/chromium/extensions/
cp ./usr/share/chromium/extensions/odbdbcaekkgabdfaabepfjgiooilmaoe.json /usr/share/chromium/extensions/odbdbcaekkgabdfaabepfjgiooilmaoe.json
mkdir -p /usr/share/google-chrome/extensions/
cp ./usr/share/google-chrome/extensions/odbdbcaekkgabdfaabepfjgiooilmaoe.json /usr/share/google-chrome/extensions/odbdbcaekkgabdfaabepfjgiooilmaoe.json
mkdir -p /usr/share/applications/
cp ./usr/share/applications/sk.disig.WebSigner.desktop /usr/share/applications/sk.disig.WebSigner.desktop

Qt 4

Klient pre svoj beh potrebuje knižnicu Qt 4. Ak sa nachádza v repozitároch distribúcie máme takmer vyhrané. Ak nie (Qt 4 sa začalo nahradzovať knižnicou Qt 5 okolo roku 2012), musíme ju ručne skompilovať. Budem predpokladať, že máme nainštalovaný kompilátor a všetky potrebné knižnice aj s hlavičkovými súbormi. Stiahneme Qt 4 a patche potrebné na kompiláciu s aktuálnym gcc.

mkdir qt
cd qt
wget https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz
wget http://git.yoctoproject.org/cgit/cgit.cgi/meta-qt4/plain/recipes-qt4/qt4/qt4-4.8.7/0036-qt-everywhere-opensource-src-4.8.7-gcc6.patch?h=b37d8b93924b314df3591b4a61e194ff3feb5517 -O 0036-qt-everywhere-opensource-src-4.8.7-gcc6.patch
wget https://raw.githubusercontent.com/gobolinux/Recipes/b7501a9f0ba0681f51050ffefb6f1f1fe8b93353/revisions/Qt/4.8.7-r2/01-gcc6_build_fix.patch

Rozbalíme a opatchujeme zdrojáky.

tar -xvzf qt-everywhere-opensource-src-4.8.7.tar.gz
cd qt-everywhere-opensource-src-4.8.7
patch -p1 < ../01-gcc6_build_fix.patch
patch -p1 < ../0036-qt-everywhere-opensource-src-4.8.7-gcc6.patch

Skompilujeme

CFLAGS="-pipe -O1 -fPIC -fpermissive" CXXFLAGS="-pipe -O1 -fPIC -fpermissive -std=gnu++11" ./configure -prefix /usr/local/eid -accessibility -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -no-gtkstyle -no-sse3 -no-sse4.1 -no-sse4.2 -fast -opensource -no-javascript-jit -no-scripttools -script -declarative -no-declarative-debug -confirm-license -nomake "examples demos docs"
make

a nainštalueme (pod rootom).

make install

Po úspešnej inštalácii môžme spustiť eID klienta pod rootom príkazom LD_LIBRARY_PATH="/usr/local/eid/lib:$LD_LIBRARY_PATH" /usr/bin/EAC_MW_klient. Pri troche šťastia nás aplikácia poteší touto peknou hláškou, ktorá znamená, že správca balíka libcurl v debiane je kretén, ale nemá to žiaden vplyv na aplikáciu a môžme ju smelo používať.

/usr/bin/EAC_MW_klient: /usr/lib64/libcurl.so.4: no version information available (required by /usr/lib/eac_mw_klient/libpaos-communication.so)

Ak sa však zobrazí hlásenie /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found znamená to, že správca balíka v našej distribúcii je tiež kretén, ale o niekoľko úrovní menší než ten z debianu. Riešenie rozpíšem v sekcii curl.

Curl

Klient eID je skompilovaný voči balíkom v debiane. Jednou z jeho závislostí je libcurl. Debian má možnosť súčasne nainštalovať libcurl3 a libcurl4. Štandardným spôsobom skompilovaný libcurl je univerzálny, má stabilné API, takže aplikácii je jedno akú verziu jej podhodíme. Dá sa však skompilovať aj s verzovanými symbolmi, vtedy nám aplikácia zlinkovaná s trojkovou verziou nebude fungovať s libcurl4. Väčšinou to nie je žiaden problém. V normálnych distribúciách sa trojkové aplikácie linkujú s libcurl.so.3 a štvorkové s libcurl.so.4. V debiane si istý inteligent povedal: „Čo tak vytvoriť balík s libcurl.so.4, ale so symbolmi z libcurl.so.3?“. Tak sme teda získali binárky vyžadujúce libcurl.so.4 s trojkovým rozhraním.

Poďme si teda skompilovať náš vlastný retardovaný libcurl.

mkdir curl
cd curl
wget https://curl.haxx.se/download/curl-7.63.0.tar.gz
tar -xvzf curl-7.63.0.tar.gz
cd curl-7.63.0
./configure --prefix=/usr/local/eid --disable-ldap  --disable-ldaps  --disable-manual --disable-versioned-symbols --enable-ipv6  --enable-threaded-resolver --with-gssapi  --with-libssh2 --with-random='/dev/urandom' --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' --disable-symbol-hiding --enable-versioned-symbols

Teraz musíme v súbore lib/libcurl.vers zmeniť CURL_OPENSSL_4 na CURL_OPENSSL_3. Skompilujeme ho pomocou príkazu make a nainštalujeme pod rootom príkazom make install.

Klienta eID môžme spustiť pod rootom príkazom LD_LIBRARY_PATH="/usr/local/eid/lib:$LD_LIBRARY_PATH" /usr/bin/EAC_MW_klient.

PIN

Prílohy



    • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 12.01 | 16:02
      Avatar WlaSaTy   Návštevník

      Pekná prácička, i keď eID je kompletne mimo mňa. Skúsil si do tej čítačky vložiť inú čipovú kartu, že či to reaguje a či sa dá niečo vyčítať? Elekrtičenka, platobná karta, ...

      • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 12.01 | 16:38
        Avatar Miroslav Bendík Gentoo  Administrátor

        Ja som dostal na polícii túto a je to univerzálna čítačka/zapisovačka, ktorá podporuje rôzne typy kariet, medzi inými aj EMV (teda platobné karty).

        • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 12.01 | 18:50
          Avatar WlaSaTy   Návštevník

          A dá sa z toho niečo vyčítať? Lebo cez NFC sa na platobné karty už nezvykne zapisovať história transakcií, a ani zostatok na účte. Dosť to nas.. keď vypadne platobný terminál v bufete a mne je tá akožekreditka s gastráčmi naprt.

          • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 20.01 | 20:11
            Avatar Miroslav Bendík Gentoo  Administrátor

            Nevyzerá, že by sa z toho dalo niečo rozumné vyčítať.

          • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 21.01 | 02:15
            Avatar suchar   Návštevník
            Dosť to nas.. keď vypadne platobný terminál v bufete a mne je tá akožekreditka s gastráčmi naprt.

            Ved ty nemas ani televizor, tak neodrbavaj, ze mas kreditku

            ktora vypadla, to je len tvoja fantazia .....

            Si abstinent co sa boji vlastneho tiena .... strng --- nazdravie .... truhlik

            • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 21.01 | 21:44
              Avatar samadama   Návštevník

              Tak, je pravda, že on často spomína ako nemá nič a ak má, tak je to staré lebo novému nedôveruje. V tejto dobe sa stále dá fungovať (a to bez problému) kešom. Som aj ja zvedavý čo vypotí :D On je taký jednoduchý paranoik ;)

              • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 22.01 | 08:37
                Avatar Andrej Lacho Debian, CentOS ...  Administrátor

                Ja len upresním že on nemyslel kartu platobnú alebo kreditnú ale kartu kde má gastrace. Čiže nejaku ticket restaurant či dinning ticket's či ako sa to volá. Proste náhrada za papierové gastrace.

    • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 30.01 | 22:31
      Avatar martinV   Návštevník

      Ja som to skusal na minte 18 a stale mi to nefunguje.

      Co som spravil:

      - nainstaloval som samotnu aplikaciu eID(v 3.0.0). sluzba pcscd bezi - nainstaloval som d-launcher - json sa nachadza usr/lib/mozilla/native-messaging-hosts, pouzivam firefox

      aplikacia bezi, citacka nacita obciansky, berie spravny BOK. Ked vsak pridem na slovnesko.sk dostavam hlasku aby som spustil aplikaciu EID

      Upozornenie: Na Vašom počítači nie je spustená aplikácia pre eID. Bez toho nie je možné pokračovať v prihlásení.

      Fakt neviem ako dalej. Dakujem za rady

      • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 31.01 | 16:54
        Avatar lujza45   Návštevník

        akú máš čítačku , original program si stiahol cez slovensko sk ?

        • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 31.01 | 18:03
          Avatar martinV   Návštevník

          čítačku mám od nich, gemalto.

          jasné program som stiahol zo slovensko.sk, verziu pre mint.

          Ja som mal nainštalovanú verziu 1 a ta fungovala. Avšak musel som prejsť na novšiu verziu, a odvtedy problémy.

      • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 31.01 | 19:11
        Avatar Miroslav Bendík Gentoo  Administrátor

        Hmm, beží eid klient v systrayi? Ja som to teraz skúšal a ide to v poriadku dokonca aj bez originálnej čítačky (mám notebook s integrovanou, takže sa mi nechce vyťahovať dongle zo skrine).

    • RE: Používanie eID 3.0 na nepodporovanej distribúcii - hard way 31.01 | 23:18
      Avatar martinV   Návštevník

      no a zrazu to začalo fungovať. len neviem čo som, kde nastavil, že to ide :(

      každopadne ďakujem za snahu a prajem pekný večer