Jak na eIDAS kvalifikovaný certifikát na české eObčance a digitální podpis PDF na Linuxu

Koupil jsem si u PostSignum CA „kvalifikovaný certifikát“ pro možnost dělat digitální podpisy PDF nebo jiných dokumentů, S/MIME podpisy e-mailů atd., s platností úředně ověřeného podpisu platného kdekoli v EU. Privátní klíč je vygenerovaný bezpečnostním čipem na smartcard, kterým je… česká občanka! Požádat o certifikát funguje online z domu jen z Windows (a asi Macu), ale následně lze sice komplikovaně, ale aspoň že nějak, digitálně podepisovat dokumenty i v Linuxu. Třeba časem přijdu i na to, jak to dělat trochu pohodlněji nebo mi oblíbená AI napíše vlastní skripty, co to celé zefektivní a zautomatizují. Jak se to teda dělá?

Potřebujete novější občanský průkaz s čipem, a musíte v něm mít vytvořených všech 5 kódů pro práci s bezpečnostním čipem (DOK, IOK, PIN, PUK, QPIN – reálně je potřeba na celou tuhle věc PIN a QPIN). Občanka je vlastně normální smartcard, co v čipu uvnitř umí dělat různé kryptografické operace, a je českým státem považovaná za tzv. „kvalifikovaný prostředek“, který dokáže vytvořit a bezpečně držet v sobě privátní klíč pro „kvalifikované certifikáty“, aby jimi šlo dělat „kvalifikované digitální signatury“ (nejvyšší stupeň ověření totožnosti dle evropského nařízení eIDAS). A musíte mít kontaktní čtečku těchto čipových karet. Funguje skoro každá čtečka, co je v business noteboocích (HP Elitebook, Lenovo Thinkpady, Dell Latitude to mají často), já teď to štěstí nemám a notebook s čtečkou aktivně nepoužívám, plus Windows mám na stolním počítači. Před lety jsem si asi za 200 korun koupil levnou čtečku AKASA AK-CR-03BKV2 do USB portu a jelikož občanku nemusím nosit běžně s sebou, tak je zasunutá trvale od portu čtečky doma.

Pokud už máte to štěstí, že se dokážete eObčankou přihlásit do aplikací státní správy, tedy máte ty kódy, čtečku, aplikaci eObčanka (funguje v Windows, Macu, Linuxu i telefonech), nebo alternativně máte U2F/FIDO2 hardwarový token, kterým se dokážete ověřit pomocí MojeID v režimu záruky „vysoká“, můžete všecho vyřídit pouze online z domu klidně v neděli odpoledne, jako já dneska. Jenom k tomu potřebujete aplikaci certifikační autority, co je pouze pro Windows nebo Mac, ale nikoli pro Linux. V Česku máme tři certifikační autority, které tyhle věci dělají a jsou na to oprávněné, všechny jsou stejně debilní, protože ani jedna nenabízí možnost celou operaci udělat i na Linuxu. Můžete zkusit libovolnou certifikační autoritu z jiné země EU, ale hodně štěstí, jestli budete úspěšnější. Já to vzdal a registroval se u PostSignum, tedy CA od České pošty, pomocí webové aplikace CertifikátOnline.

PostSignum certifikát online

Pokud nemáte funkční eObčanku a čtečku čipových karet a potřebné kódy pro přihlášení (PIN, IOK etc.), ani už z dřívějška vytvořenou registraci a plně ověřenou totožnost v MojeID pomocí hardwarového U2F/FIDO2 bezpečnostního klíče (YubiKey, GoTrust Idem key (skoro 3× levnější než YubiKey: USB-A, USB-C, NIC.cz je kdysi rozdávali zdarma), máte s online ověřením smůlu a užijte si čekání ve froně CzechPointu na poště, jak to tam přesně funguje nevím a radši už ani nechci vědět, stačilo mi před 15 lety si vytvářet takhle datovou schránku.

Každopádně předpokládejme, že se tam pomocí eObčanky nebo MojeID přihlásíte. Následující screenshoty ukazují postup v případě využití hardwarového tokenu GoTrust Idem Key, tedy metody MojeID úroveň vysoká (podobnou obrazovku zná hodně lidí, ale většina se přihlašuje jen přes Bankovní identitu např. do Datovky, jenže to tady nejde; jedinými povolenými metodami jsou zde eObčanka a MojeID vysoká:

Výběr ověření, kupodivu nestačí nejrozšířenější metoda "bankovní identity" co má asi většina lidí, ale pouze metoda přes eObčanku nebo MojeID v úrovni vysoká

Při volbě MojeID zadáte jméno a heslo, následuje dvoufaktor pouze pomocí FIDO2 klíče, nikoli jinými metodami jako TOTP.

Přihlášení do MojeID

Krok dvoufaktorového přihlášení je zadat PIN předem nastavený pro hardwarový klíč (PIN nejde dodnes rozumně nastavit v Linuxu, ale jakmile se jednou na zařízení nastaví např. ve Windows, tak už funguje OK jak v Linuxu např. zde ve Firefoxu, tak i na novějších verzích Androidu). Po zadání PINu se rozbliká dotyková ploška na tokenu, které se stačí dotknout.

Zadání PINu k FIDO2 tokenu a dotknutí se kovového políčka na tokenu

Pokud zrovna není den voleb, kdy milion lidí chce zkusit funkčnost eDokladů pro ověření totožnosti ve volebních místnostech, mělo by přihlášení do portálu státní správy fungovat a předat info o platném ověřeném přihlášení i PostSignum.

Nahoře pak jsme úspěšně přihlášeni a můžeme zvolit typ certifikátu. Nevím jak to je u podnikatelských certifikátů, já dělal ten na fyzickou osobu.

Instalace iSignum, vyplnění kolonek, zadání ID žádosti.

Nyní stáhněte a nainstalujte aplikaci na veškeré operace, co s CA budete dělat: iSignum (verze pro Windows), případně i verze pro Mac a Android a postupujte podle návodu co vám Postsignum píše, takže Nový certifikát, vyplnit nacionále, výběr úložiště nebude Windows, ale ten čip v eObčance, odeslat žádost, vložit ID žádosti do kolonky na webu, tlačítko Pokračovat.

Certifikát pak musíte přijmout, jinak se celá žádost vygenerovaná v aplikaci iSignum (CSR) po 60 dnech zruší. Pak se ještě musí naimportovat do operačního systému, aby ten věděl, že ho může používat. To jsem moc nepochopil, proč se nestalo samo hned, šlo to až po nějakém ukončení a znovuspuštění aplikace. Screenshoty z toho nemám, hodně štěstí se tím správně proklikat.

Certifikát u žádné z CA není zadarmo. Státy, co myslí digitalizaci vážně, nabízejí občanům tuhle službu zdarma, např. Estonsko a jejich ID-kaart. V ČR za to aktuálně (1/2026) chce PostSignum 440 korun na rok a 1100 korun na 3 roky. Aktuální ceník zde. Klidně si vyberte I.CA nebo jinou CA, co může mít jiné metody ověření a stát o 20 korun méně, máme přece „konkurenci“ (ha ha). Třeba se jednou dožijeme i toho, že tahle věc bude zdarma jako naprostý základ moderního života, a náklady na tuto základní službu bude hradit stát. U klasických certifikátů pro ověření domén webových stránek (SSL/TLS), aby web mohl běžet na šifrovaném https a nikoli nešifrovaném http se taky dřív platily tisíce ročně za každou doménu, dneska to Let’s Encrypt a další udělaly jako naprostou samozřejmost, co má každý dostupnou bezplatně.

Je možné si při registraci vyplnit až tři e-mailové adresy, které u certifikátu budou, což chápu tak, že pak lze použít jeden certifikát na digitální podepisování emailů až z tří různých adres, a digitální podpisy budou u každé adresy OK a nebudete podepisovat certifikátem psaným na adresu X email odcházející z adresy Y. Jestli to je relevantní nevím, podle mě stát bude řešit jen to, že má ověřenou identitu certifikátu, že to jste vy, a z jaké emailové adresy pak pošlete digitálně podepsaný email na podatelnu nějakého úřadu, by podle mě už mělo být jedno. Stejně spíš než celý e-mail pomocí S/MIME budete podepisovat jednotlivá PDF příloh nebo dokumenty ODT/DOCX v LibreOffice či Wordu, aby je šlo samostatně uložit a nebyla digitálně podepsaná jen obálka celého emailu.

Máte-li certifikát, uložte si někam bezpečně PDF, co vám přijde, kde je i v plaintextu (!) heslo pro případnou revokaci (zneplatnění) certifikátu.

Na Windows je pak už podepisování PDF celkem jednoduché. Umí to Adobe Acrobat Reader, který je ale otřesným bloatware, nebo i trochu šetrnější (ale už ne o moc) prohlížeče PDF, např. PDF X-Change editor. Jen se tam musí zvolit využití Windows API pro podepisování a zvolit správný certifikát, co už by měl být naimportovaný, v okamžiku podpisu dokumentu a pokusu jej uložit vyskočí okno, kam se musí zadat QPIN pro dokončení podpisu. Výsledné PDF pak je digitálně podepsané a programy, co to umí poznat, uvedou i že podpis je platný dle evropské legislativy eIDAS jako kvalifikovaný podpis, tj. ekvivalent úředně ověřeného podpisu na CzechPointu/u notáře, a to v celé EU. Linuxový Okular podpis ukazuje, ale nepíše tam údaj o tom, že jde o eIDAS:

Okular - digitálně podepsané PDF

Screenshot z nájemní smlouvy, co jsem podepisoval, je ale podepisovaný na Windows pomocí PDF X-Change editoru, kam šlo vložit kromě samotného digitálního podpisu (který je jinak neviditelný) i něco, co připomíná klasický podpis a co většina lidí čeká (tj. sken podpisu a nějaké blbosti v kolonce, kam se normálně člověk podepisuje). To z hlediska legislativy je úplně zbytečná věc, jenže to lidi čekají.

Na Linuxu jsem na vytváření těchto omalovánek i digitálních podpisů, ale jen pomocí běžných certifikátů, co má člověk i s privátním klíčem uložené normálně na disku, dělal jak pomocí Okularu, tak pomocí Simple-Signer:

Simple Signer Python nástoj v Linuxu na digitální podpis PDF s certifikátem + obrázkem pro běžné lidi, aby byli spokojení

Jenže tenhle nástroj počítá s tím, že existuje na disku přístupný soubor s certifikátem, kde je rovnou i privátní klíč. A to u kvalifikovaných certifikátů záměrně není možné, protože privátní klíč generuje přímo čip na kartě a nikdy ji nemá opustit, a je nutné na kryptografické operace používat pkcs11 providera.

Díky bohu na jedno řešení přišel před pár lety Tomáš „Drew“ na AbcLinuxu a to funguje i na začátku roku 2026, minimálně tedy na mém Ubuntu 22.04 (Mint 21.3):

  • předpokládá se, že už máte nainstalovanou a funkční aplikaci eObčanka, co instaluje i systémovou pkcs11 knihovnu /usr/lib/x86_64-linux-gnu/libeopproxyp11.so co budeme potřebovat
  • stáhnete a spustíte si JSignPDF, vyžaduje Javu
  • otevřete v editoru conf/conf.properties a odkomentujete řádek pkcs11config.path=conf/pkcs11.cfg a doporučuji i změnit hash časového razítka z SHA-1 na něco lepšího např. SHA-256
  • otevřete v editoru conf/pkcs11.cfg a tam dáte:
    • name=eObcanka
  • library=/usr/lib/x86_64-linux-gnu/libeopproxyp11.so
  • spustíte aplikaci wrapperem jsignpdf.sh, při startu na terminálu musí být vidět, že to načítá PKCS11 providera (Registering SunPKCS11 provider from configuration in conf/pkcs11.cfg)
  • vyberete PKCS11 ze seznamu nahoře
  • tlačítkam vpravo dáte Načíst klíče, zeptá se to na PIN eObčanky, vyberete ten vytvořený v aplikaci iSignum, pokud máte v eObčance v jiných slotech i jiné klíče, budou tam vidět taky, ale ty asi nechceme, ty máme např. pro přihlašování se na SSH
  • níže lze vyplnit různá metadata, ale především potřebujeme najít PDF, co budeme podepisovat, a zvolit cestu a název výstupního PDF, kam uložit nové už podepsané PDF
  • pokud nechceme jen neviditelný podpis, ale i s viditelnými „omalovánkami“, tedy obrázek skenu našeho podpisu a nějaké povídání k tomu (lidi to mají rádi), tak je to ještě větší zábava. Dole je potřeba zaškrtnout viditelný podpis, vpravo vedle toho tlačítkem nastavení pak definovat, jak a kam do PDF to celé umístit. Hodně štěstí, popis je ve screenshotu.
  • Pokud chceme i důvěryhodné časové razítko, je na to další tlačítko vpravo. Kvalifikovaný timestamp od nezávislé autority chceme: pouze to dává důvěru, že datum a čas, kdy jsme dokument podepsali, odpovídá realitě, a nezměnili jsme si v počítači datum a čas, abychom dokument libovolně antedatovali), musíme mít nějaký server, co ta kvalifikovaná časová razítka dává a to ideálně zadarmo. Nějaký seznam takových serverů, co lze zkusit, je třeba tady na Githubu.
  • Nakonec můžeme dát Podepsat, chce to po nás nejdřív PIN eObčanky a pak ještě QPIN. Za chvíli je hotovo.
 hlavní rozhraní jSignPDF
Časové razítko a zadání TSA serveru
jSignPDF a zadání PIN eObčanky
jSignPdf QPIN

V PDF prohlížečích, co umí poznat digitální podpisy (Adobe Acrobat, PDF X-change editor, Okular), bude kromě obrázku na místě, co jsme si zvolili, i celý dokument řádně podepsaý:

Okular digitální podpis (kvalifikovaný podpis) z eObčanky, eIDAS kompatibilní

No, a to je všechno!

Na Linuxu to je větší opruz, než v Adobe Readeru nebo PDF Xchange editoru ve Windows, ale jakmile je jednorázově ve Windows certifkát na čipové kartě eObčanky, je možné v případě nutnosti dělat digitální podpisy dokumentů i z Linuxu, a na tři roky moct dělat skoro jakékoli právní úkony z domu bez nutnosti chodit kamkoli na CzechPoint nebo po úřadech.

Jde takhle podepisovat i ODT soubory v LibreOffice, ale je nutné načíst knihovnu /usr/lib/x86_64-linux-gnu/libeopproxyp11.so jako providera PKCS11 v NSS (poskytovatelích bezpečnostních zařízení) ve Firefoxu nebo Thunderbirdu, a navést LibreOffice na konkrétní profil Firefoxu nebo Thunderbirdu, kde to je připravené. Před volbou, čím to podepsat, je nutné zadat PIN eObčanky, a po kliknutí na Podepsat, ještě zadat QPIN eObčanky. Jde tohle použít i při exportu PDF z LibreOffice a rovnou tím podepsat PDF. Tento režim ale neumožňuje umístit obrázek podpisu někam do dokumentu, jde pouze o samotnou digitální signaturu bez vizuálního projevu někde v dokumentu.

přidání NSS ve Firefoxu

Jakmile je ve Firefoxu zadaný vlastní provider PKCS11 (výše pod názvem eObcanka), lze na profil Firefoxu napojit LibreOffice v sekci nastavení Libreoffice-Zabezpečení-Cesta pro certifikáty.

Máme-li vytvořený soubor a uložený, můžeme v menu Soubor-Elektronické podpisy začít digitální podpis samotného OpenDocument souboru:

Jakmile jsme zadali PIN eObčanky, PKCS11 provider z eObčanky vytáhl náš kvalifikovaný certifikát, a ten se pak objeví spolu se všemi ostatními certifikáty ze všech ostatních PKCS11 providerů Firefoxu, kam patří všechny klientské certifikáty, co jsme si kdy nainstalovali pro přístup na nějaké webové stránky, všechny jiné certifikáty, co máme načtené přímo z P12/PFX souborů z disku, a taky PGP klíče.

Jakmile vybereme správný certifikát, ideálně hledat podle vydavatelské CA, v tomto případě PostSignum Qualified CA 4, můžeme dole doplnit volitelně důvod, proč dokument podepisujemem a potvrdíme tlačítkem Podepsat. Vyskočí okno, kde ještě musíme tohle potvrdit QPINem eObčanky:

Závěrem: Na spoustu věcí sice kvalifikovaný elektronický podpis není potřeba, protože s úřady stačí komunikovat datovou schránkou a celá datová zpráva je digitálně podepsaná taky, ale např. pracovní smlouvu, dohody o provedení práce nebo libovolné jiné smlouvy nebo dokumenty je praktičtější podepsat v rámci samotného souboru PDF, aby to celé fungovalo bez ohledu na datovou schránku. Takové dokumenty pak lze poslat obyčejným emailem, a mají stejnou platnost, jako úředně ověřený podpis na papíře, a funguje to i v celé EU, nejen v ČR.

Autor

Martin

Pracuji jako ajťák a grafik na volné noze, zejména ale pro brněnskou firmu vyrábějící ekodrogerii. Dále působím v brněnském systému místní směny Rozleťse, Českém zahrádkářském svazu, České psychedelické společnosti, spolku Archetypal a Mezinárodní komunitě dzogčhenu. Chcete mě podpořit? BTC: 37mf2FJR26Ce3DxMkocukJDgB1eVjasnZB, příp. PGP podepsané adresy dalších kryptoměn.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *