Využitie eID - libpkcs11_x64.so (Linux) pre externé aplikácie

Zdravím,
chcel by som využiť eID vo verzii 4.1 resp. modul /usr/lib/eID_klient/libpkcs11_x64.so z externých aplikácií ako napr. LibreOffice Draw, Okular apod. na Ubuntu 22.04 pre podpisovanie s kvalifikovaným elektronickým podpisom. Priamu podporu smartkariet by mal mať napr. Thunderbird a Firefox. Podobne ako je to možné z aplikácií ako Podpisuj, alebo Web Singer. Web Singer modul rozozná automaticky a funguje. V aplikácií Podpisuj ho musím vyhľadať manuálne, následne funguje bez problémov. Firefox a Thunderbird bohužiaľ pri pokuse o komunikáciu zamrznú a musím ich ukončiť natvrdo. Tiež je celkom zaujímavý postup využitia uvedený tu Prihlásenie na SSH s občianskym preukazom no ani ten mi žiaľ nefunguje. Nedokážem extrahovať verejné kľúče. Máte prosím nejaké skúsenosti s využitím ibpkcs11_x64.so?
Ďakujem za pomoc.

Tiež by som rád, ale sa mi nepodarilo.

Problém bude v tom, že slovenská implementácia eID (s knižnicou libpkcs11) je odlišná od štandardného pkcs11, konkrétne dátový kontajner na karte a/alebo spôsob komunikácie medzi kartou a aplikáciou. Keby sa zachoval štandard, tak by fungovalovo podpisovanie PDF slovenským eID v LibreOffice a iných aplikáciách, a to kvalifikovaným podpisom aj zdokonaleným podpisom.

Zrejme z rovnakého dôvodu slovenský eID klient potrebuje Oracle JRE 1.8.0, ale nechce fungovať so štandardným openJDK v aktuálnej verzii.

Linux balíky, ktoré môžu byť potrebné ku eID (ak sa závislosti nevyriešili automaticky pri inštalácii):
pkcs11 (libpkcs11)
pcscd
pcsc-tools
opensc
libccid
gnutls-bin

Kombinácia pkcs11 + gpg:
scdaemon
gpgsm
dirmngr
gnupg-agent
pinentry-qt

Kombinácia pkcs11 + ssh:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-ssh_certificate_pkcs_11_token
https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html

1 Like

Vďaka za reakciu.
Ak je odlišná tak je to veľká škoda… :-/ Nechápem prečo sa nedržia štandardu PKCS-11.
No neviem, či je to vec dátového kontajneru, skôr myslím, že je problém v spôsobe komunikácie. Totiž dakedy možno s inou verziou eID klienta fungoval asi napr. export verejných kľúčov (+ten postup prihlásenia sa na SSH), čo mne teraz nefunguje, skúšal ešte niekto?
Na Windowse som kedysi dokázal podpisovať bez problémov s eID cez Adobe Acrobat, tiež so staršou verziou eID klienta, ale teraz už Windows vôbec nepoužívam, takže som to dlho neskúšal :slight_smile: Nevie prosím niekto, či to ešte funguje bez problémov? Tiež sa to asi pokúsim v blízkej dobe otestovať s aktuálnou verziou eID.
Balíčky mi chýbali len libpkcs11, gnupg-agent, gnutls-bin, po doinštalovaní to vyskúšam opäť.
A v neposlednom rade neskúšal prosím niekto napísať ohľadom tejto veci na support slovensko.sk resp. tomu dodávateľovi, ktorý to pre nich zaisťuje? Mňa so všetkými technickými otázkami odkázali vždy priamo na dodávateľa…Myslím, že podpora PKCS-11 by mal byť štandard a mali by sme to od nich vyžadovať… :slight_smile:
Ak by bol problém dátového kontajneru na OP myslíte, že s novým OP od 1.12 (kvôli exspirácií certifikátu plánujem hneď začiatkom decembra poň ísť) sa niečo v tomto smere zmení?
Vďaka.

Vyskúšal som aj návody z daných odkazov, bohužiaľ rovnako neúspešné…
Skúsil som podpísať dokument na Windows:
S Adobe Acrobat Reader funguje podpis s využitím pkcs11_x64.dll eID 4.1 bez problémov, dokonca OP rozozná aj Firefox/Thunderbird, dokáže si ho načítať spustí zadanie BOK…

1 Like

Dnes som testoval využitie PKCS11 s verziou eID 3.7 na Ubuntu 22.04. Exportovať verejné kľúče sa mi podarilo bez problémov, vyskočí okno eID s virtuálnou klávesnicou…
Podobne sa mi podarilo sprístupniť zariadenie aj vo Firefoxe - opäť vyskočilo okno eID s virtuálnou klávesnicou. Firefox/Thuderbird je potrebné použiť iba ako prostredníka pre PKCS11, nakoľko LibreOffice priamo smartkartu neidentifikuje.
Následne som skúsil podpísať s využitím úložiska certov FF cez LibreOffice. Ten mi dokázal zobraziť certy na OP (zdokonalený aj kvalifikovaný), dokázal zobraziť eID virtuálnu klávesnicu, ale nedokázal dokončiť podpisovanie.
Skúšal som aj Okular cez FF úložisko, kde bola karta prístupná, opäť sa spustilo eID, zobrazilo virtuálnu klávesnicu no potom Okular padol…
Asi napíšem supportu, ale ak by ešte niekto vedle zdieľať svoje skúsenosti s obdobnými pokusmi (či napr. nie je chyba dakde u mňa) bol by som vďačný…

1 Like

Konečne som našiel funkčné riešenie, ktoré na Linuxe dokáže pracovať s PKCS#11 korektným spôsobom. Teda bez problémov podpíšem s kvalifikovaným elektronickým podpisom (eID 4.4) a pridám časové razítko. Jedná sa o program JSignPdf https://jsignpdf.sourceforge.net/ od českého autora Josef Cacek. Súčasná stabilná verzia podporuje len formát podpísaných PDF PKCS#7, ale autor riešenie veľmi aktívne vyvíja a už pracuje i na podpore formátu AdES. Celý projekt je opensource prosím všetkých, ktorí by mohli testovať/pomôcť, aby navštívili autorov github GitHub - intoolswetrust/jsignpdf: PDF signing software written in Java. It supports visible signatures, timestamping, certificate verification and many other cool features

1 Like

Podporu síce majú, ale nič užitočné s nimi spraviť nevedia. Firefox vie certifikáty na tokenoch používať najmä na TLS autentifikáciu. Na tú možno použiť len “zdokonalený” nekvalifikovaný podpisový certifikát. Funguje to, akurát to niet kde použiť.

Thunderbird okrem TLS autentifikácie podporuje šifrovanie a podpisovanie správ elektronickej pošty (S/MIME). Naše certifikáty ale na šifrovanie elektronickej pošty nie sú určené, neobsahujú adresu a certifikát vydávajúcej certifikačnej autority nie je podpísaný žiadnou z veľkých autorít, ktorej zvyšok internetu dôveruje. Takže Thunderbird by to síce technicky dokázal, ale s našimi certifikátmi to nikam nevedie.

Preto je najlepšie libpkcs11_x64.so do Firefox a Thunderbird vôbec nepridávať.

LibreOffice napríklad štandardne preberá databázu certifikátov z Firefoxu. Mne podpisovanie v LibreOffice (eID Klient 4.x) tiež nechcelo fungovať, až som si všimol, že stačí vypnúť Firefox. Odvtedy mám databázu certifikátov pre LibreOffice oddelenú. Vo Firefoxe tie moduly jednoducho vôbec nastavené nie sú a hotovo. V LibreOffice sa dá nastaviť Certificate Path a NSS databáza sa dá spravovať pomocou modutil, prípadne priamo “ručne”.

Podpisovať možno aj v príkazovom riadku programom pdfsig z projektu poppler na ktorom je postavený aj Okular. (Niektoré relevantné časti kódu v poppler sú prevzaté priamo z LibreOffice, https://cgit.freedesktop.org/poppler/poppler/tree/poppler/SignatureHandler.cc.)

Možnože by pomohlo mať i pre Okular samostatnú databázu certifikátov, resp. používať ju tak, aby sa k nej nepokúšali pristupovať dva programy naraz.

2 Likes

Čo sa týka Firefoxu a Thuderbirdu - áno je to tak, ale ja som písal aj dakde vyššie, že som ich skúšal použiť iba ako prostredníka pre prístup cez PKCS#11.
Skúšal som aj samotnú databázu cez libnss3-tools teda spravovať prostredníctvom modutil a skutočne platí to čo popisujete a tiež sa mi podarilo raz podpísať cez LibreOffice týmto spôsobom, ale bolo to veľmi nestabilné a často mi to padalo. Možno je chyba dakde na moje strane. Vytvoril som si vlastné úložisko ~/.pki/nssdb a LibreOffice raz dokázal spracovať BOK aj KEP. Lenže potom som narazil na zásadný problém, ktorý vlastne pre mňa znamenal koniec týchto experimentov. LibreOffice má totiž aj tak zásadné problémy s pridaním kvalifikovaného časového razítka, nedá sa to ex-post, len pri exporte do PDF a bohužiaľ tam je zafixovaný formát PKCS#7 a absentuje možnosť voľby formátu PAdES.
Čo sa týka Okularu tam som nedosiahol úspech ani s využitím samostatnej databázy. Ale bohužiaľ tiež nedokáže pridať časové razítka, a tak sa stáva pre mňa nepoužiteľným.
Elektronický podpis bez časového razítka z kryptografického hľadiska nemá príliš zmysel a takto by bolo dobré viesť osvetu aj medzi laikmi.