Elektronický podpis v Linuxe

dobrý deň
ako v linuxe (Debian 11) nastavím pre libreoffice možnosť podpísať dokument z OP?
Pozeral som rone návody al väčšina je pre zahraničné eID.
https://help.libreoffice.org/6.1/he/text/shared/guide/digitalsign_send.html?DbPAR=SHARED

problém je v tomto:
Importujte svoj nový koreňový certifikát a potom vyberte a upravte certifikát. Povoľte, aby bol koreňový certifikát dôveryhodný aspoň pre webový a e-mailový prístup.

nevidím koreňový certifikát, lepšie povedané, neviem názov.

ďakujem

Tak ako Firefox či Thunderbird, aj LibreOffice používa knižnicu NSS a jej (formát pre) databázu certifikátov. Musí to byť databáza rovnaká, no nie nevyhnutne tá istá, ktorú používa Firefox.

Ak ale Firefox tak či tak máš, nastavuje sa to možno jednoduchšie.

1 Podpisovanie

V nastaveniach prehliadača vyber Súkromie a bezpečnosť → Bezpečnostné zariadenia. V okne sa objaví Správca bezpečnostných zariadení. Klikni na Načítať, vyplň ľubovoľný názov modulu (napr. eid) a cestu k PKCS#11 knižnici (pri použití eID klienta obvykle /usr/lib/eID_klient/libpkcs11_x64.so)

V LibreOffice skontroluj, či Nástroje → Možnosti → Security → Certificate Path ukazuje na profil Firefoxu.

Podpisovanie by malo fungovať. Pri použití eID klienta na kódoch zadávaných v UI LibreOffice nezáleží, tie správne stačí zadať v UI eID klienta.

2 Overovanie

LibreOffice zatiaľ každý čerstvý bezchybný podpis (správne) vyhodnotí ako neplatný, pretože príslušný certifikát nevie overiť.

Koreňový certifikát pre kvalifikované podpisové certifikáty je tu:
https://eidrep1.disig.sk/svkeidaca2/cert/svkeidaca2.pem

Koreňový certifikát k certifikátom pre zdokonalený elektronický podpis je tu:
https://eidrep1.disig.sk/svkeidroot/cert/svkeidroot.pem

Aby LibreOffice podpisy občianskym preukazom považoval za platné, treba príslušné koreňové certifikáty pridať do databázy. Súbory stiahnuť a v nastaveniach Firefox zvoliť Súkromie a bezpečnosť → Zobraziť certifikáty…. V okne Správca certifikátov vybrať Autority → Importovať… oba certifikáty pridať. V zobrazenom okne pokojne označiť oba checkboxy (pre prvý certifikát by možno stačila druhá možnosť, pre druhý prvá)

Teraz už LibreOffice (nielen) čerstvé podpisy považuje za platné.

3 Vodu káže, víno pije

Mne sa zdieľanie databázy medzi Firefox a LibreOffice vôbec neosvedčilo. Okrem iného som mohol podpisovať, len ak Firefox vôbec nebežal. Preto som si vytvoril novú databázu certifikátov, ktorá slúži len LibreOffice.

Skontroluj, či máš balík libnss3-tools a v novom prázdnom adresári spusti:

modutil -dbdir . -add eid -libfile /usr/lib/eID_klient/libpkcs11_x64.so
certutil -d . -A -i /path/to/svkeidroot.pem -t CT,c, -n "SVK eID Root CA"
certutil -d . -A -i /path/to/svkeidaca2.pem -t C,C, -n "SVK eID ACA2"

Potom na ten adresár nasmeruj Certificate Path v LibreOffice.

Deaktivácia zbytočného

Pretože používam len kvalifikovaný certifikát, slot s tým zdokonaleným rovno vypnem:

modutil -dbdir . -disable eid -slot "…; Sig_EP"

Posledný parameter (závisiaci od modelu čítačky) získam pomocou

modutil -dbdir . -list

4 Ani to víno nepije…

V skutočnosti na podpisovanie vôbec nepoužívam eID klienta, ale OpenSC. Ale to už je iný príbeh.

4 Likes

ďakujem
je to funčkné aj s časocou pečiatkou
Najprv som vyskúšal možnosť cez FF a potom druhú možnosť pri ktorej nemusím kontrolovať či je vypnutý FF.

modutil -dbdir . -add eid -libfile /usr/lib/eID_klient/libpkcs11_x64.so
certutil -d . -A -i /path/to/svkeidroot.pem -t CT,c, -n "SVK eID Root CA"
certutil -d . -A -i /path/to/svkeidaca2.pem -t C,C, -n "SVK eID ACA2"
prebehlo v poriadku. V adresáry .pkcs mám cert9.db akey4.db a 
pkcs11.txt:
library=
name=NSS Internal PKCS #11 Module
parameters=configdir='.' certPrefix='' keyPrefix='' secmod='' flags= updatedir='' updateCertPrefix='' updateKeyPrefix='' updateid='' updateTokenDescription='' 
NSS=Flags=internal,critical trustOrder=75 cipherOrder=100 slotParams=(1={slotFlags=[ECC,RSA,DSA,DH,RC2,RC4,DES,RANDOM,SHA1,MD5,MD2,SSL,TLS,AES,Camellia,SEED,SHA256,SHA512] askpw=any timeout=30})

library=/usr/lib/eID_klient/libpkcs11_x64.so
name=eid

Problém nastal pri modutil -dbdir . -disable eid -slot "…; Sig_EP"

WARNING: Performing this operation while the browser is running could cause
corruption of your security databases. If the browser is currently running,
you should exit browser before continuing this operation. Type 
'q <enter>' to abort, or <enter> to continue: 

ERROR: Slot "…; Sig_EP" not found.

takže si musím vybrať sám.
1 Like

Moja chyba, tie tri bodky som tam dal ja. Treba ich doplniť na skutočný názov slotu končiaci na Sig_EP. U mňa napríklad príkaz

modutil -dbdir . -list

vráti toto:

Listing of PKCS #11 Modules
-----------------------------------------------------------
2. eid
        library name: /usr/lib/eID_klient/libpkcs11_x64.so
           uri: pkcs11:library-manufacturer=Ministerstvo%20vnutra%20SR;library-description=eID%20SK%20PKCS%2311%20library;library-version=4.0
         slots: 2 slots attached
        status: loaded

         slot: Alcor Micro AU9540 00 00; Sig_ZEP
        token: Sig_ZEP
          uri: pkcs11:token=Sig_ZEP;manufacturer=Atos%20Information%20Technology%20GmbH;serial=ffffffff;model=CardOS%20V5.4

         slot: Alcor Micro AU9540 00 00; Sig_EP
        token: Sig_EP
          uri: pkcs11:token=Sig_EP;manufacturer=Atos%20Information%20Technology%20GmbH;serial=ffffffff;model=CardOS%20V5.4

Môj príkaz na deaktiváciu slotu so zdokonaleným certifikátom preto vyzerá takto:

modutil -dbdir . -disable eid -slot "Alcor Micro AU9540 00 00; Sig_EP"

Ten príkaz v skutočnosti len pridá na koniec súboru pkcs11.txt jediný riadok:

library=/usr/lib/eID_klient/libpkcs11_x64.so
name=eid
NSS=slotParams={0x00000002=[slotFlags=Disable ] }
1 Like

ďakujem
plne funkčné

1 Like