V poslední době řeším různé úřednosti. A protože jsme “líní ajťáci”, nechceme pálit energii chozením na úřady nebo poštu a raději strávíme pár hodin hledáním cesty, jak se tomu vyhnout
Kvalifikovaný elektronický podpis potřebujete v Česku pro některé hodně specifické úkony, většinou už stačí datová schránka.
Ale někdy je to zkrátka povinná výbava, např. při řízení právnícké osoby (např. s.r.o., spolek ap.).
A pak vás dostihne realita - pokud jste rozumný a samostatný tvor, který nechce mít nařízeno, jak používat svůj počítač (nebo kdy jej nepoužívat a hodit do koše!), stát s vaší existencí odmítá počítat.
Už dávno nejde jen o „několik nerdů“. Většina věcí funguje out of box a počet lidí, kteří používají Linux, roste i v souvislosti s podmínkami současné geopolitické situace a snahou o technologickou a bezpečnostní nezávislost.
Takže proč právě teď není čas na státní úrovni opustit (jednostranně) výhodné smlouvy s americkými korporáty a jít cestou otevřenosti jako to probíhá např. ve Francii?
Post signum a kvalifikovaný token pro Linux
Na stránkách PostSignum je Linux u TokenME EVO vedený jako „nepodporovaný“.
V oficiální dokumentaci je ale uvedeno, že TokenME EVO Linux podporuje.
Paradoxní je, že zrovna systém, který je v bezpečnosti první volba každého, kdo bezpečnosti rozumí, dostává od úředního šotka stopku.
Dobrá zpráva: jde to. Jen je potřeba jít trochu oklikou.
Krok 1: Vyberte kvalifikovaný prostředek
Nejdřív potřebujete zařízení, kam se certifikát uloží.
- Přehled kvalifikovaných prostředků: PostSignum - Kvalifikované prostředky
- Praktická volba: PostSignum - TokenME EVO
Pro svoji potřebu jsem zvolil právě TokenME EVO.
Krok 2: Vygenerujte žádost (ano, přes OpenSSL)
Oficiální cesta tlačí online formulář, který ale funguje jen na Windows:
Naštěstí je vlastně celá bezpečnost postavená nad OpenSSL, což je nativní linuxový a open source nástroj:
Poznámka: V dokumentaci je příklad s klíčem
rsa:2048, ale v praxi už tak krátký klíč nesmí být použit, proto jsem použil 4096 bitů:openssl req -out request.req -new -newkey rsa:4096 -keyout privatekey.key
Pak je potřeba nahrát žádost přes formulář pro získání ID žádosti (typicky SMS):
Po uložení přijde ID žádosti (SMS). To je klíčová informace pro vydání certifikátu.
Krok 3: Czech POINT kolečko
S ID žádosti vyrazíte na pobočku Czech POINT.
Co mít s sebou:
- vyplněnou a vytištěnou smlouvu: Smlouva PO/PFO (PDF)
- číslo žádosti ze SMS
- občanku a trpělivost
Po ověření dostanete vydaný certifikát (obvykle e-mailem), který následně nějak potřebujete dostat na kvalifikovaný podpisovací prostředek - pro mě teda konkrétně TokenME EVO.
Krok 4: Linux balíčky a ovladače
Na Linuxu se hodí mít alespoň základní balíčky:
sudo apt install pcscd pcsc-tools opensc
Při troše štěstí doinstalujete dostupné ovladače / utility:
Výrobce tokenu linuxovou podporu uvádí, bohužel žádné ovladače na webu nelze najít:
-
Po chvilce pátrání narazíte na tento návod, který pomůže nastavit
Bit4id PKI Managerna Linuxu, aby byl tokenTokenME EVOpoužitelný. -
Zdroje pro
*.deb|*.rpmbalíčky jsou na jiné adrese (než “resources”, kde byste je čekali): Bit4id Resources - tokenME -
Nakonec k onomu
Kit Bit4id Universal Middlewarepřidám, že manuál je pouze ve španělštině, protože přeciI skladník ve šroubárně může číst Vergilia v originále.
Krok 5: Stažení podpisovacího certifikátu a uložení na zařízení
-
Po obdržení zařízení je silně doporučeno změnit PIN kód, který slouží k odemčení zařízení při každém použití certifikátu.
-
To je možné udělat pomocí
Bit4id PKI Manageru. -
Certifikát ve formátu
*.pempotvrdíte a stáhnete z webu PostSignum (přijde Vám e-mailem po návštěvě Czech POINTu). -
Aplikace ISignum je opět pouze pro vyvolené, proto se musíme uchýlit k alternativním řešením a
Bit4id PKI Managerani prohlížeč vkládání certifikátů do zařízení neumožňuje. -
Pokud všechny kroky proběhly bez problémů, měly byste mít certifikáty připravené v souborovém systému. (soubory
*.pema*.crt)
Krok 6: Cesta nejmenšího odporu
- Přihlášením k zařízení přes
pkcs11-toolzjistíme aktuální stav klíčů v tokenu. Po zadání PIN kódu by to mělo vypadat nějak takto:
$ pkcs11-tool --module /usr/lib/libbit4ipki.so --list-objects --login
Using slot 0 with a present token (0x0)
Logging in to "TokenME EVO".
Please enter User PIN:
Private Key Object; RSA
label: .prekeyPS
ID: xxxxxxxxxxxxxxxxxx
Usage: decrypt, sign, signRecover, unwrap
Access: sensitive, always sensitive, never extractable, local
warning: PKCS11 function C_GetAttributeValue(MODULUS_BITS) failed: rv = CKR_ATTRIBUTE_SENSITIVE (0x11)
Public Key Object; RSA 0 bits
label: .prekeyPS
ID: xxxxxxxxxxxxxxxxxx
Usage: encrypt, veriqfy, verifyRecover, wrap, derive
Access: local
- Je potřeba převést
*.pemcertifikát na*.derformát:
openssl x509 -in ABCDEFGH42.pem -out certifikat.der -outform DER
- Posledním krokem je vložení certifikátu do zařízení přes
pkcs11-tool:
$ pkcs11-tool --module /usr/lib/libbit4ipki.so --login --write-object certifikat_na_token.der --type cert --id 2e7072656b65795053 --label "PostSignum Certifikat"
Using slot 0 with a present token (0x0)
Logging in to "TokenME EVO".
Please enter User PIN:
Created certificate:
Certificate Object; type = X.509 cert
label: PostSignum Certifikat
subject: DN: C=CZ/organizationIdentifier=NTRCZ-17131944, O=\xC5\xA0imon Jan\xC4\x8Da, OU=1, CN=Bc. \xC5\xA0imon Jan\xC4\x8Da, SN=Jan\xC4\x8Da, GN=\xC5\xA0imon/serialNumber=xxxxxxx
serial: 0173A028
ID: xxxxxxxxxxxxxxxxxx
Podepisování dokumentů
- Pro podepisování dokumentů je potřeba přidat podpis do databáze podpisů:
# Vytvoří/otevře databázi a přidá do ní tvůj Bit4Id modul
modutil -dbdir sql:$HOME/.pki/nssdb -add "Bit4Id Token" -libfile /usr/lib/libbit4ipki.so
-
Jednodušeji to ale lze udělat pomocí zobrazovače PDF
Okular, který umí podepisovat dokumenty přespkcs11-tool.- V menu Tools vyberete “Digitally sign” a postupujete podle instrukcí.
Krátké shrnutí
Uff!
Kvalifikovaný podpis na Linuxu zařídit jde, jen to bohužel není automatický proces.
Potřebujete:
- správný token,
- žádost přes OpenSSL (4096 bitů),
- nahrání žádosti pro získání ID,
- vyplněnou a vytištěnou smlouvu
SMLOUVA O POSKYTOVÁNÍ CERTIFIKAČNÍCH SLUŽEB, - návštěvu Czech POINT,
- základní linuxovou PKI výbavu a
Bit4id PKI Manager. - Nahrát certifikát do tokenu a do databáze podpisů.
- Podepisovat dokumenty např. přes
Okular. - Smazat soubory klíčů z počítače pro bezpečnost.
Není to nejkratší cesta. Je to ale funkční cesta.
Řešení
Kde je vůle, tam je cesta.
Zařízení pro podepisování by mělo být po nastavení možné v Linuxu normálně používat.
Co z toho plyne
„Nepodporujeme Linux“ v tomto kontextu často znamená spíš:
Není na to jedno velké tlačítko.
a
Nemáme čas a ochotu se tím zabývat, takže to nefunguje.